From ce85063653ddaceff495cbe2e8d9f9ec3dea8c45 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Tue, 14 Apr 2020 13:24:15 -0700 Subject: [PATCH] [7.x] Re-add origin url information to publish POM files (#55173) --- build.gradle | 8 ++++++++ buildSrc/build.gradle | 1 - .../org/elasticsearch/gradle/BuildPlugin.groovy | 17 +++++++++++++++++ .../gradle/plugin/PluginBuildPlugin.groovy | 4 +--- client/rest-high-level/build.gradle | 1 - client/rest/build.gradle | 1 - client/sniffer/build.gradle | 1 - client/transport/build.gradle | 1 - distribution/archives/build.gradle | 1 - libs/cli/build.gradle | 1 - libs/core/build.gradle | 1 - libs/geo/build.gradle | 1 - libs/nio/build.gradle | 1 - libs/secure-sm/build.gradle | 1 - libs/ssl-config/build.gradle | 2 +- libs/x-content/build.gradle | 1 - modules/lang-painless/spi/build.gradle | 1 - plugins/transport-nio/build.gradle | 2 +- rest-api-spec/build.gradle | 1 - server/build.gradle | 1 - test/build.gradle | 1 - x-pack/plugin/core/build.gradle | 1 - x-pack/plugin/identity-provider/build.gradle | 2 +- x-pack/plugin/security/build.gradle | 2 +- x-pack/plugin/sql/jdbc/build.gradle | 1 - x-pack/transport-client/build.gradle | 1 - 26 files changed, 30 insertions(+), 26 deletions(-) diff --git a/build.gradle b/build.gradle index 568204eb398..6b31e5bcb48 100644 --- a/build.gradle +++ b/build.gradle @@ -65,6 +65,14 @@ if (VersionProperties.elasticsearch.toString().endsWith('-SNAPSHOT')) { } String elasticLicenseUrl = "https://raw.githubusercontent.com/elastic/elasticsearch/${licenseCommit}/licenses/ELASTIC-LICENSE.txt" +configure(allprojects - project(':distribution:archives:integ-test-zip')) { + project.pluginManager.withPlugin('nebula.maven-base-publish') { + if (project.pluginManager.hasPlugin('elasticsearch.build') == false) { + throw new GradleException("Project ${path} publishes a pom but doesn't apply the build plugin.") + } + } +} + subprojects { // Default to the apache license project.ext.licenseName = 'The Apache Software License, Version 2.0' diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index a37c8adfce7..c446a5cf30d 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -156,7 +156,6 @@ if (project == rootProject) { if (project != rootProject) { apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' - apply plugin: 'nebula.maven-scm' allprojects { targetCompatibility = 10 diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index 8ef4834886a..313d4ad1658 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -28,6 +28,7 @@ import org.apache.commons.io.IOUtils import org.elasticsearch.gradle.info.BuildParams import org.elasticsearch.gradle.info.GlobalBuildInfoPlugin import org.elasticsearch.gradle.info.JavaHome +import org.elasticsearch.gradle.plugin.PluginBuildPlugin import org.elasticsearch.gradle.precommit.DependencyLicensesTask import org.elasticsearch.gradle.precommit.PrecommitTasks import org.elasticsearch.gradle.test.ErrorReportingTestListener @@ -43,6 +44,7 @@ import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.Task +import org.gradle.api.XmlProvider import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.ModuleDependency @@ -390,6 +392,7 @@ class BuildPlugin implements Plugin { shadow.component(publication) // Workaround for https://github.com/johnrengelman/shadow/issues/334 // Here we manually add any project dependencies in the "shadow" configuration to our generated POM + publication.pom.withXml(this.&addScmInfo) publication.pom.withXml { xml -> Node dependenciesNode = (xml.asNode().get('dependencies') as NodeList).get(0) as Node project.configurations.getByName(ShadowBasePlugin.CONFIGURATION_NAME).allDependencies.each { dependency -> @@ -405,6 +408,20 @@ class BuildPlugin implements Plugin { generatePomTask.configure({ Task t -> t.dependsOn = ['generatePomFileForShadowPublication'] } as Action) } } + + // Add git origin info to generated POM files + project.pluginManager.withPlugin('nebula.maven-base-publish') { + PublishingExtension publishing = project.extensions.getByType(PublishingExtension) + MavenPublication nebulaPublication = (MavenPublication) publishing.publications.getByName('nebula') + nebulaPublication.pom.withXml(this.&addScmInfo) + } + } + + private static void addScmInfo(XmlProvider xml) { + Node root = xml.asNode() + root.appendNode('url', PluginBuildPlugin.urlFromOrigin(BuildParams.gitOrigin)) + Node scmNode = root.appendNode('scm') + scmNode.appendNode('url', BuildParams.gitOrigin) } /** diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy index c6ea3beee71..1027d4bae40 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy @@ -19,7 +19,6 @@ package org.elasticsearch.gradle.plugin import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin -import nebula.plugin.publishing.maven.MavenScmPlugin import org.elasticsearch.gradle.BuildPlugin import org.elasticsearch.gradle.NoticeTask import org.elasticsearch.gradle.Version @@ -144,13 +143,12 @@ class PluginBuildPlugin implements Plugin { private void configurePublishing(Project project, PluginPropertiesExtension extension) { // Only configure publishing if applied externally if (extension.hasClientJar) { - project.plugins.apply(MavenScmPlugin.class) + project.pluginManager.apply('nebula.maven-base-publish') // Only change Jar tasks, we don't want a -client zip so we can't change archivesBaseName project.tasks.withType(Jar) { baseName = baseName + "-client" } // always configure publishing for client jars - project.plugins.apply(MavenScmPlugin.class) project.publishing.publications.nebula(MavenPublication).artifactId(extension.name + "-client") project.tasks.withType(GenerateMavenPom.class).configureEach { GenerateMavenPom generatePOMTask -> generatePOMTask.destination = "${project.buildDir}/distributions/${project.archivesBaseName}-client-${project.versions.elasticsearch}.pom" diff --git a/client/rest-high-level/build.gradle b/client/rest-high-level/build.gradle index 88813258714..d5b8589a147 100644 --- a/client/rest-high-level/build.gradle +++ b/client/rest-high-level/build.gradle @@ -23,7 +23,6 @@ apply plugin: 'elasticsearch.testclusters' apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.rest-test' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' apply plugin: 'elasticsearch.rest-resources' group = 'org.elasticsearch.client' diff --git a/client/rest/build.gradle b/client/rest/build.gradle index be48321be12..dfe3fd59eda 100644 --- a/client/rest/build.gradle +++ b/client/rest/build.gradle @@ -20,7 +20,6 @@ import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis */ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' targetCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/client/sniffer/build.gradle b/client/sniffer/build.gradle index a0bea7a7b69..82eebef6a27 100644 --- a/client/sniffer/build.gradle +++ b/client/sniffer/build.gradle @@ -18,7 +18,6 @@ */ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' targetCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/client/transport/build.gradle b/client/transport/build.gradle index 36bd6740182..fe26293159d 100644 --- a/client/transport/build.gradle +++ b/client/transport/build.gradle @@ -18,7 +18,6 @@ */ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' group = 'org.elasticsearch.client' diff --git a/distribution/archives/build.gradle b/distribution/archives/build.gradle index 16910029dae..71db3b2b359 100644 --- a/distribution/archives/build.gradle +++ b/distribution/archives/build.gradle @@ -357,7 +357,6 @@ configure(subprojects.findAll { it.name == 'integ-test-zip' }) { // The integ-test-distribution is published to maven BuildPlugin.configurePomGeneration(project) apply plugin: 'nebula.maven-base-publish' - apply plugin: 'nebula.maven-scm' // make the pom file name use elasticsearch instead of the project name archivesBaseName = "elasticsearch${it.name.contains('oss') ? '-oss' : ''}" diff --git a/libs/cli/build.gradle b/libs/cli/build.gradle index 50374dcccae..e5aa2336b61 100644 --- a/libs/cli/build.gradle +++ b/libs/cli/build.gradle @@ -19,7 +19,6 @@ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.optional-base' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' dependencies { compile 'net.sf.jopt-simple:jopt-simple:5.0.2' diff --git a/libs/core/build.gradle b/libs/core/build.gradle index cef1aed9881..c4aa6099bb0 100644 --- a/libs/core/build.gradle +++ b/libs/core/build.gradle @@ -21,7 +21,6 @@ import org.elasticsearch.gradle.info.BuildParams apply plugin: 'nebula.optional-base' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' archivesBaseName = 'elasticsearch-core' diff --git a/libs/geo/build.gradle b/libs/geo/build.gradle index c48f7eaebbd..5e7cfb90f1e 100644 --- a/libs/geo/build.gradle +++ b/libs/geo/build.gradle @@ -19,7 +19,6 @@ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' dependencies { testCompile(project(":test:framework")) { diff --git a/libs/nio/build.gradle b/libs/nio/build.gradle index b8afdd8f103..a2e47250a90 100644 --- a/libs/nio/build.gradle +++ b/libs/nio/build.gradle @@ -17,7 +17,6 @@ * under the License. */ apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' dependencies { compile project(':libs:elasticsearch-core') diff --git a/libs/secure-sm/build.gradle b/libs/secure-sm/build.gradle index 152fd387b1e..4cb0b89a16d 100644 --- a/libs/secure-sm/build.gradle +++ b/libs/secure-sm/build.gradle @@ -17,7 +17,6 @@ * under the License. */ apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' dependencies { // do not add non-test compile dependencies to secure-sm without a good reason to do so diff --git a/libs/ssl-config/build.gradle b/libs/ssl-config/build.gradle index 24b7ebc79a7..d835e1be2f3 100644 --- a/libs/ssl-config/build.gradle +++ b/libs/ssl-config/build.gradle @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -apply plugin: "nebula.maven-scm" +apply plugin: "nebula.maven-base-publish" dependencies { compile project(':libs:elasticsearch-core') diff --git a/libs/x-content/build.gradle b/libs/x-content/build.gradle index be056980ef5..2c7c6cc9401 100644 --- a/libs/x-content/build.gradle +++ b/libs/x-content/build.gradle @@ -19,7 +19,6 @@ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' dependencies { compile project(':libs:elasticsearch-core') diff --git a/modules/lang-painless/spi/build.gradle b/modules/lang-painless/spi/build.gradle index 3f25f247a2b..e8325a86faf 100644 --- a/modules/lang-painless/spi/build.gradle +++ b/modules/lang-painless/spi/build.gradle @@ -19,7 +19,6 @@ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' group = 'org.elasticsearch.plugin' archivesBaseName = 'elasticsearch-scripting-painless-spi' diff --git a/plugins/transport-nio/build.gradle b/plugins/transport-nio/build.gradle index 8aa700286d3..192efe63c43 100644 --- a/plugins/transport-nio/build.gradle +++ b/plugins/transport-nio/build.gradle @@ -18,7 +18,7 @@ import org.elasticsearch.gradle.info.BuildParams * specific language governing permissions and limitations * under the License. */ -apply plugin: "nebula.maven-scm" +apply plugin: "nebula.maven-base-publish" esplugin { description 'The nio transport.' diff --git a/rest-api-spec/build.gradle b/rest-api-spec/build.gradle index 8902c57211e..066a2263c1e 100644 --- a/rest-api-spec/build.gradle +++ b/rest-api-spec/build.gradle @@ -1,6 +1,5 @@ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' apply plugin: 'elasticsearch.rest-resources' test.enabled = false diff --git a/server/build.gradle b/server/build.gradle index 2c30396a0f8..eafb5a8bc24 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -22,7 +22,6 @@ import org.elasticsearch.gradle.info.BuildParams apply plugin: 'elasticsearch.build' apply plugin: 'nebula.optional-base' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' publishing { publications { diff --git a/test/build.gradle b/test/build.gradle index 82938355288..b5bae1a951f 100644 --- a/test/build.gradle +++ b/test/build.gradle @@ -24,7 +24,6 @@ subprojects { group = 'org.elasticsearch.test' apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' - apply plugin: 'nebula.maven-scm' // TODO: should we have licenses for our test deps? dependencyLicenses.enabled = false diff --git a/x-pack/plugin/core/build.gradle b/x-pack/plugin/core/build.gradle index f9d2dc6081f..41e3188e731 100644 --- a/x-pack/plugin/core/build.gradle +++ b/x-pack/plugin/core/build.gradle @@ -6,7 +6,6 @@ import java.nio.file.Paths apply plugin: 'elasticsearch.esplugin' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' archivesBaseName = 'x-pack-core' diff --git a/x-pack/plugin/identity-provider/build.gradle b/x-pack/plugin/identity-provider/build.gradle index bc84fc3afc7..4575307ea98 100644 --- a/x-pack/plugin/identity-provider/build.gradle +++ b/x-pack/plugin/identity-provider/build.gradle @@ -3,7 +3,7 @@ import org.elasticsearch.gradle.info.BuildParams evaluationDependsOn(xpackModule('core')) apply plugin: 'elasticsearch.esplugin' -apply plugin: 'nebula.maven-scm' +apply plugin: 'nebula.maven-base-publish' esplugin { name 'x-pack-identity-provider' description 'Elasticsearch Expanded Pack Plugin - Identity Provider' diff --git a/x-pack/plugin/security/build.gradle b/x-pack/plugin/security/build.gradle index 8410c57f196..866e8c2b3da 100644 --- a/x-pack/plugin/security/build.gradle +++ b/x-pack/plugin/security/build.gradle @@ -3,7 +3,7 @@ import org.elasticsearch.gradle.info.BuildParams evaluationDependsOn(xpackModule('core')) apply plugin: 'elasticsearch.esplugin' -apply plugin: 'nebula.maven-scm' +apply plugin: 'nebula.maven-base-publish' esplugin { name 'x-pack-security' description 'Elasticsearch Expanded Pack Plugin - Security' diff --git a/x-pack/plugin/sql/jdbc/build.gradle b/x-pack/plugin/sql/jdbc/build.gradle index dc42f904765..badecb59777 100644 --- a/x-pack/plugin/sql/jdbc/build.gradle +++ b/x-pack/plugin/sql/jdbc/build.gradle @@ -1,6 +1,5 @@ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' apply plugin: 'com.github.johnrengelman.shadow' description = 'JDBC driver for Elasticsearch' diff --git a/x-pack/transport-client/build.gradle b/x-pack/transport-client/build.gradle index 0254cbabcf3..7b39cffcbaa 100644 --- a/x-pack/transport-client/build.gradle +++ b/x-pack/transport-client/build.gradle @@ -1,6 +1,5 @@ apply plugin: 'elasticsearch.build' apply plugin: 'nebula.maven-base-publish' -apply plugin: 'nebula.maven-scm' group = 'org.elasticsearch.client' archivesBaseName = 'x-pack-transport'