You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2020/09/29 08:24:32 UTC

[lucene-solr] 03/03: LUCENE-9547: Race condition in maven artifact configuration results in wrong group/ artifact name

This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 2b692ccb714fe000bacceb4a5bcd21d5ae51930d
Author: Dawid Weiss <da...@carrotsearch.com>
AuthorDate: Tue Sep 29 09:42:56 2020 +0200

    LUCENE-9547: Race condition in maven artifact configuration results in wrong group/ artifact name
---
 gradle/maven/defaults-maven.gradle | 41 ++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 15 deletions(-)

diff --git a/gradle/maven/defaults-maven.gradle b/gradle/maven/defaults-maven.gradle
index 5c260f3..83e0051 100644
--- a/gradle/maven/defaults-maven.gradle
+++ b/gradle/maven/defaults-maven.gradle
@@ -69,26 +69,37 @@ configure(rootProject) {
         ":solr:test-framework",
     ]
   }
+}
 
-  configure(subprojects.findAll { it.path in rootProject.published }) {
-    apply plugin: 'maven-publish'
-    apply plugin: 'signing'
+configure(subprojects.findAll { it.path in rootProject.published }) { prj ->
+  apply plugin: 'maven-publish'
+  apply plugin: 'signing'
 
-    publishing {
-      // TODO: Add publishing repository details.
-    }
+  publishing {
+    // TODO: Add publishing repository details.
+  }
 
-    plugins.withType(JavaPlugin) {
-      task sourcesJar(type: Jar, dependsOn: classes) {
-        archiveClassifier = 'sources'
-        from sourceSets.main.allJava
-      }
+  plugins.withType(JavaPlugin) {
+    task sourcesJar(type: Jar, dependsOn: classes) {
+      archiveClassifier = 'sources'
+      from sourceSets.main.allJava
+    }
 
-      task javadocJar(type: Jar, dependsOn: javadoc) {
-        archiveClassifier = 'javadoc'
-        from javadoc.destinationDir
-      }
+    task javadocJar(type: Jar, dependsOn: javadoc) {
+      archiveClassifier = 'javadoc'
+      from javadoc.destinationDir
+    }
 
+    // This moves publishing configuration after all the scripts of all projects
+    // have been evaluated. This is required because we set artifact groups
+    // and archivesBaseName in other scripts (artifact-naming.gradle) and
+    // maven pom does not accept lazy property providers (so everything must
+    // be in its final form).
+    //
+    // In theory project.afterEvaluate closure should also work but for some reason
+    // it fired earlier than artifact-naming.gradle; don't know whether it's a bug
+    // in gradle or just complex relationships between lazy collection hooks.
+    gradle.projectsEvaluated {
       publishing {
         def configurePom = {
           name = "Apache Solr/Lucene (${project.name})"