From c510415a1da0cce818fb1b4ece1483c3eb959a29 Mon Sep 17 00:00:00 2001 From: Danilo Pianini Date: Fri, 17 Jun 2022 17:27:18 +0200 Subject: [PATCH] fix: the upload task explicitly depends on the signing task --- .../gradle/mavencentral/Configuration.kt | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/main/kotlin/org/danilopianini/gradle/mavencentral/Configuration.kt b/src/main/kotlin/org/danilopianini/gradle/mavencentral/Configuration.kt index 156c3a6f..4f45e568 100644 --- a/src/main/kotlin/org/danilopianini/gradle/mavencentral/Configuration.kt +++ b/src/main/kotlin/org/danilopianini/gradle/mavencentral/Configuration.kt @@ -32,10 +32,9 @@ fun MavenPublication.configureForMavenCentral(extension: PublishOnCentralExtensi configurePomForMavenCentral(extension) val project = extension.project // Signing - project.tasks.findByName("sign${name.capitalized()}Publication") - ?: project.configure { - sign(this@configureForMavenCentral) - } + findSigningTaskIn(project) ?: project.configure { + sign(this@configureForMavenCentral) + } } /** @@ -132,8 +131,8 @@ private fun Project.configureNexusRepository(repoToConfigure: Repository, nexusU val publicationName = publication.name.replaceFirstChar(Char::titlecase) project.tasks.register( "upload${publicationName}To${repoToConfigure.name}Nexus", - ).configure { publishTask -> - publishTask.repository = project.repositories.maven { repo -> + ).configure { uploadTask -> + uploadTask.repository = project.repositories.maven { repo -> repo.name = repoToConfigure.name repo.url = project.uri(repoToConfigure.url) repo.credentials { @@ -141,18 +140,19 @@ private fun Project.configureNexusRepository(repoToConfigure: Repository, nexusU it.password = repoToConfigure.password.orNull } } - publishTask.dependsOn(createStagingRepository) - uploadAllPublications.get().dependsOn(publishTask) - closeStagingRepository.get().mustRunAfter(publishTask) - publishTask.publication = publication - publishTask.doFirst { + publication.findSigningTaskIn(project)?.let { uploadTask.dependsOn(it) } + uploadTask.dependsOn(createStagingRepository) + uploadAllPublications.get().dependsOn(uploadTask) + closeStagingRepository.get().mustRunAfter(uploadTask) + uploadTask.publication = publication + uploadTask.doFirst { warnIfCredentialsAreMissing(repoToConfigure) } - publishTask.doLast { - publishTask.repository.url = nexusUploadUrl.get() + uploadTask.doLast { + uploadTask.repository.url = nexusUploadUrl.get() } - publishTask.group = PublishingPlugin.PUBLISH_TASK_GROUP - publishTask.description = "Uploads the $publicationName publication " + + uploadTask.group = PublishingPlugin.PUBLISH_TASK_GROUP + uploadTask.description = "Uploads the $publicationName publication " + "to a staging repository on ${repoToConfigure.name}." } } @@ -175,3 +175,6 @@ private fun Project.warnIfCredentialsAreMissing(repository: Repository) { ) } } + +private fun MavenPublication.findSigningTaskIn(project: Project) = + project.tasks.findByName("sign${name.capitalized()}Publication")