From 1c24f3f17624b23a5dbe4d3e53b679452add30fb Mon Sep 17 00:00:00 2001 From: felixncheng Date: Tue, 15 Aug 2023 22:18:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20publish=E6=8F=92=E4=BB=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E9=A1=B9=E7=9B=AE=20#193?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tencent/devops/DevOpsPublishPlugin.kt | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/devops-boot-project/devops-boot-tools/devops-publish-gradle-plugin/src/main/kotlin/com/tencent/devops/DevOpsPublishPlugin.kt b/devops-boot-project/devops-boot-tools/devops-publish-gradle-plugin/src/main/kotlin/com/tencent/devops/DevOpsPublishPlugin.kt index 00b0d97..669f175 100644 --- a/devops-boot-project/devops-boot-tools/devops-publish-gradle-plugin/src/main/kotlin/com/tencent/devops/DevOpsPublishPlugin.kt +++ b/devops-boot-project/devops-boot-tools/devops-publish-gradle-plugin/src/main/kotlin/com/tencent/devops/DevOpsPublishPlugin.kt @@ -30,10 +30,15 @@ class DevOpsPublishPlugin : Plugin { isReleaseVersion = !project.version.toString().endsWith("SNAPSHOT") project.pluginManager.apply(MavenPublishPlugin::class.java) project.pluginManager.apply(SigningPlugin::class.java) - project.pluginManager.apply(NexusPublishPlugin::class.java) - configurePublishing(project) - configureSigning(project) - configureManifest(project) + if (project.rootProject == project) { + project.pluginManager.apply(NexusPublishPlugin::class.java) + configureNexusPublish(project) + } + project.afterEvaluate { + configurePublishing(project) + configureSigning(project) + configureManifest(project) + } } /** @@ -61,6 +66,11 @@ class DevOpsPublishPlugin : Plugin { } } } + } + } + + private fun configureNexusPublish(project: Project) { + project.run { extensions.getByType(NexusPublishExtension::class.java).repositories.sonatype { repo -> val releaseUrl = findProperty(project, RELEASE_REPO_URL) val snapshotUrl = findProperty(project, SNAPSHOT_REPO_URL) @@ -77,21 +87,19 @@ class DevOpsPublishPlugin : Plugin { */ private fun configureSigning(project: Project) { project.run { - afterEvaluate { - extensions.getByType(SigningExtension::class.java).run { - val signingKey = findProperty(project, SIGNING_KEY) - val signingKeyFile = findProperty(project, SIGNING_KEY_FILE) - val signingKeyId = findProperty(project, SIGNING_KEY_ID) - val signingPassword = findProperty(project, SIGNING_PASSWORD) - val secretKey: String? = signingKey ?: signingKeyFile?.let { File(it).readText() } - useInMemoryPgpKeys(signingKeyId, secretKey, signingPassword) - this.setRequired({ isReleaseVersion && gradle.taskGraph.hasTask(PUBLISH_TASK_PATH) }) - sign(extensions.getByType(PublishingExtension::class.java).publications) - } + extensions.getByType(SigningExtension::class.java).run { + val signingKey = findProperty(project, SIGNING_KEY) + val signingKeyFile = findProperty(project, SIGNING_KEY_FILE) + val signingKeyId = findProperty(project, SIGNING_KEY_ID) + val signingPassword = findProperty(project, SIGNING_PASSWORD) + val secretKey: String? = signingKey ?: signingKeyFile?.let { File(it).readText() } + useInMemoryPgpKeys(signingKeyId, secretKey, signingPassword) + this.setRequired({ isReleaseVersion && tasks.findByName(PUBLISH_TASK_PATH) != null }) + sign(extensions.getByType(PublishingExtension::class.java).publications) + } - tasks.withType(Sign::class.java) { - it.onlyIf { isReleaseVersion } - } + tasks.withType(Sign::class.java) { + it.onlyIf { isReleaseVersion } } } } @@ -101,14 +109,12 @@ class DevOpsPublishPlugin : Plugin { */ private fun configureManifest(project: Project) { project.run { - afterEvaluate { - val manifestMap = mapOf( - "Implementation-Title" to (project.description ?: project.name), - "Implementation-Version" to project.version, - ) - tasks.withType(Jar::class.java) { - it.manifest { manifest -> manifest.attributes(manifestMap) } - } + val manifestMap = mapOf( + "Implementation-Title" to (project.description ?: project.name), + "Implementation-Version" to project.version, + ) + tasks.withType(Jar::class.java) { + it.manifest { manifest -> manifest.attributes(manifestMap) } } } }