You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ho...@apache.org on 2022/04/22 14:49:48 UTC

[solr] branch branch_9x updated: SOLR-16157, SOLR-16117: Fix maven release artifacts (#808)

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

houston pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new 2b7e67c2515 SOLR-16157, SOLR-16117: Fix maven release artifacts (#808)
2b7e67c2515 is described below

commit 2b7e67c2515dece6101303bf8be7147ffdae58ef
Author: Houston Putman <ho...@apache.org>
AuthorDate: Fri Apr 22 10:38:27 2022 -0400

    SOLR-16157, SOLR-16117: Fix maven release artifacts (#808)
    
    - Auto-find modules to build maven artifacts and distribution for
    - Shared dependencies between solr-core and solr-server no longer need
      special dependency types, except for Jetty client libraries. This
      worked earlier because of SolrJ, and was not guaranteed to keep
      working.
    - Remove the solr-server maven artifact.
    
    (cherry picked from commit 63902150d5c0d7483551abf28e26b0105cbc1920)
---
 dev-tools/scripts/scaffoldNewModule.py |   6 --
 gradle/maven/defaults-maven.gradle     |  13 +----
 gradle/solr/packaging.gradle           |   7 ++-
 solr/core/build.gradle                 |  60 +++++++++----------
 solr/packaging/build.gradle            |  18 +-----
 solr/server/build.gradle               | 102 ++++++++++++---------------------
 solr/test-framework/build.gradle       |   2 +-
 solr/webapp/build.gradle               |  19 +++---
 versions.lock                          |  10 ++--
 9 files changed, 89 insertions(+), 148 deletions(-)

diff --git a/dev-tools/scripts/scaffoldNewModule.py b/dev-tools/scripts/scaffoldNewModule.py
index c9fb12c7538..f9d7ff71cb5 100755
--- a/dev-tools/scripts/scaffoldNewModule.py
+++ b/dev-tools/scripts/scaffoldNewModule.py
@@ -138,12 +138,6 @@ def scaffold_folder(module_name, module_full_name, module_folder, module_descrip
   os.makedirs(os.path.join(module_folder, 'src', 'test-files'))
   os.makedirs(os.path.join(module_folder, 'src', 'test'))
 
-  update_build(os.path.join('solr', 'packaging', 'build.gradle'),
-               r':solr:modules:extraction',
-               '   ":solr:modules:%s",\n' % module_name)
-  update_build(os.path.join('gradle', 'maven', 'defaults-maven.gradle'),
-               r':solr:modules:extraction',
-               '        ":solr:modules:%s",\n' % module_name)
   update_build(os.path.join('settings.gradle'),
                r'include "solr:modules:extraction"',
                'include "solr:modules:%s"\n' % module_name)
diff --git a/gradle/maven/defaults-maven.gradle b/gradle/maven/defaults-maven.gradle
index 3950bd7e16b..647e28cd7c1 100644
--- a/gradle/maven/defaults-maven.gradle
+++ b/gradle/maven/defaults-maven.gradle
@@ -26,20 +26,9 @@ configure(rootProject) {
     published = [
         ":solr:core",
         ":solr:solrj",
-        ":solr:modules:analysis-extras",
-        ":solr:modules:analytics",
-        ":solr:modules:clustering",
-        ":solr:modules:extraction",
-        ":solr:modules:gcs-repository",
-        ":solr:modules:jaegertracer-configurator",
-        ":solr:modules:jwt-auth",
-        ":solr:modules:langid",
-        ":solr:modules:ltr",
-        ":solr:modules:s3-repository",
-        ":solr:modules:scripting",
         ":solr:prometheus-exporter",
         ":solr:test-framework",
-    ]
+    ] + project(":solr:modules").getChildProjects().values().path
 
     apacheNexusSnapshots = "https://repository.apache.org/content/repositories/snapshots"
   }
diff --git a/gradle/solr/packaging.gradle b/gradle/solr/packaging.gradle
index fca79461494..cce602fc29c 100644
--- a/gradle/solr/packaging.gradle
+++ b/gradle/solr/packaging.gradle
@@ -36,7 +36,7 @@
 // I don't know how to untie these two cleanly.
 //
 
-configure(allprojects.findAll {project -> project.path.startsWith(":solr:modules") || project.path.startsWith(":solr:prometheus-exporter") }) {
+configure(allprojects.findAll {project -> project.path.startsWith(":solr:modules:") || project.path.startsWith(":solr:prometheus-exporter") }) {
   plugins.withType(JavaPlugin) {
     ext {
       packagingDir = file("${buildDir}/packaging")
@@ -58,6 +58,8 @@ configure(allprojects.findAll {project -> project.path.startsWith(":solr:modules
     dependencies {
       solrPlatformLibs project(":solr:core")
       solrPlatformLibs project(":solr:solrj")
+      // libExt has logging libs, which we don't want.  Lets users decide what they want.
+      solrPlatformLibs project(path: ":solr:server", configuration: 'libExt')
     }
 
     // An aggregate that configures lib and test-lib in a temporary location.
@@ -76,8 +78,7 @@ configure(allprojects.findAll {project -> project.path.startsWith(":solr:modules
             return true
           }
         }
-        // libExt has logging libs, which we don't want.  Lets users decide what they want.
-        return externalLibs - configurations.solrPlatformLibs - project(':solr:server').configurations.getByName('libExt')
+        return externalLibs - configurations.solrPlatformLibs
       }, {
         into "lib"
       })
diff --git a/solr/core/build.gradle b/solr/core/build.gradle
index 2e4a565403d..c023bb90db2 100644
--- a/solr/core/build.gradle
+++ b/solr/core/build.gradle
@@ -19,6 +19,18 @@ apply plugin: 'java-library'
 
 description = 'Apache Solr Core'
 
+configurations {
+  // jettyClientImplementation should be used for all jetty client libraries used by the Solr Server.
+  // These libraries must be available in the WEB-INF/lib, as well as server/lib.
+  // Jetty does not allow for these specific libraries to be accessed from the webapp, if they only live in server/lib.
+  // Note: because of SolrEmbedded, this is not all jetty libraries.
+  // (Solr Core requires the jetty server libraries because of embedded Solr, however the webapp does not use these)
+  jettyClientImplementation
+  implementation {
+    extendsFrom jettyClientImplementation
+  }
+}
+
 dependencies {
   // Spotbugs Annotations are only needed for old findbugs
   // annotation usage like in Zookeeper during compilation time.
@@ -43,39 +55,27 @@ dependencies {
   api 'org.slf4j:slf4j-api'
 
   api project(':solr:solrj')
-  api project(':solr:server')
-
-  permitUnusedDeclared project(':solr:server')
-
-  // --- start of server/build.grade declared dependencies ---
-
-  // Note: server/build.gradle declares these dependencies yet
-  // we only want them to show up in server/lib when packaged
-  // and NOT in server/solr-webapp/webapp/WEB-INF/lib. So any
-  // "api" dependency in server/build.gradle that is needed in
-  // core/build.gradle needs to be defined as "compileOnlyApi"
-  // below.
 
-  compileOnlyApi 'io.dropwizard.metrics:metrics-core'
-  compileOnlyApi ('io.dropwizard.metrics:metrics-graphite', {
+  api 'io.dropwizard.metrics:metrics-core'
+  implementation ('io.dropwizard.metrics:metrics-graphite', {
     exclude group: "com.rabbitmq", module: "amqp-client"
   })
-  compileOnlyApi 'io.dropwizard.metrics:metrics-jmx'
-  compileOnlyApi 'io.dropwizard.metrics:metrics-jvm'
-
-  compileOnlyApi 'org.eclipse.jetty:jetty-alpn-server'
-  compileOnlyApi 'org.eclipse.jetty:jetty-http'
-  compileOnlyApi 'org.eclipse.jetty:jetty-io'
-  compileOnlyApi 'org.eclipse.jetty:jetty-rewrite'
-  compileOnlyApi 'org.eclipse.jetty:jetty-server'
-  compileOnlyApi 'org.eclipse.jetty:jetty-servlet'
-  compileOnlyApi 'org.eclipse.jetty:jetty-util'
-
-  compileOnlyApi 'org.eclipse.jetty.http2:http2-common'
-  compileOnlyApi 'org.eclipse.jetty.http2:http2-server'
-
-  compileOnlyApi 'javax.servlet:javax.servlet-api'
-  // --- end of server/build.gradle declared dependencies ---
+  implementation 'io.dropwizard.metrics:metrics-jmx'
+  implementation 'io.dropwizard.metrics:metrics-jvm'
+
+  // Jetty (both for client and server, which is only used by EmbeddedSolrServer)
+  implementation 'org.eclipse.jetty:jetty-alpn-server'
+  jettyClientImplementation 'org.eclipse.jetty:jetty-http'
+  jettyClientImplementation 'org.eclipse.jetty:jetty-io'
+  implementation 'org.eclipse.jetty:jetty-rewrite'
+  implementation 'org.eclipse.jetty:jetty-server'
+  implementation 'org.eclipse.jetty:jetty-servlet'
+  jettyClientImplementation 'org.eclipse.jetty:jetty-util'
+
+  jettyClientImplementation 'org.eclipse.jetty.http2:http2-common'
+  implementation 'org.eclipse.jetty.http2:http2-server'
+
+  implementation 'javax.servlet:javax.servlet-api'
 
   // Non-API below; although there are exceptions
 
diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle
index a96ec79962e..9a98ae436b9 100644
--- a/solr/packaging/build.gradle
+++ b/solr/packaging/build.gradle
@@ -48,22 +48,8 @@ artifacts {
 }
 
 dependencies {
-  [":solr:modules:analysis-extras",
-   ":solr:modules:analytics",
-   ":solr:modules:extraction",
-   ":solr:modules:clustering",
-   ":solr:modules:gcs-repository",
-   ":solr:modules:hadoop-auth",
-   ":solr:modules:hdfs",
-   ":solr:modules:jaegertracer-configurator",
-   ":solr:modules:jwt-auth",
-   ":solr:modules:langid",
-   ":solr:modules:ltr",
-   ":solr:modules:s3-repository",
-   ":solr:modules:scripting",
-   ":solr:modules:sql"
-  ].each { moduleName ->
-    modules project(path: moduleName, configuration: "packaging")
+  project(":solr:modules").childProjects.values().stream().map(project -> project.path).each { module ->
+    modules project(path: module, configuration: "packaging")
   }
 
   prometheusExporter project(path: ":solr:prometheus-exporter", configuration: "packaging")
diff --git a/solr/server/build.gradle b/solr/server/build.gradle
index 8a3bedb4d1d..c5e715cecc1 100644
--- a/solr/server/build.gradle
+++ b/solr/server/build.gradle
@@ -25,77 +25,40 @@ javadoc.enabled(false)
 compileJava.enabled(false)
 
 configurations {
-  api {
-    exclude group: "org.slf4j"
+  libExt
+  serverLib
+  runtimeClasspath {
+    extendsFrom serverLib, libExt
   }
   startJar
-  libExt
   webapp
   packaging
 }
 
 dependencies {
-  // If any of the below "api" declared dependencies are
-  // used in core/build.gradle, then they must be declared
-  // as "compileOnlyApi" in core/build.gradle.
-
-  permitUnusedDeclared 'io.dropwizard.metrics:metrics-core'
-  api('io.dropwizard.metrics:metrics-core', {
-    exclude group: "com.rabbitmq", module: "amqp-client"
-  })
-  permitUnusedDeclared 'io.dropwizard.metrics:metrics-graphite'
-  api('io.dropwizard.metrics:metrics-graphite', {
-    exclude group: "com.rabbitmq", module: "amqp-client"
-  })
-  permitUnusedDeclared 'io.dropwizard.metrics:metrics-jetty9'
-  api 'io.dropwizard.metrics:metrics-jetty9'
-  permitUnusedDeclared 'io.dropwizard.metrics:metrics-jvm'
-  api 'io.dropwizard.metrics:metrics-jvm'
-  permitUnusedDeclared 'io.dropwizard.metrics:metrics-jmx'
-  api 'io.dropwizard.metrics:metrics-jmx'
-
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-continuation'
-  api 'org.eclipse.jetty:jetty-continuation'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-deploy'
-  api 'org.eclipse.jetty:jetty-deploy'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-http'
-  api 'org.eclipse.jetty:jetty-http'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-io'
-  api 'org.eclipse.jetty:jetty-io'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-jmx'
-  api 'org.eclipse.jetty:jetty-jmx'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-rewrite'
-  api 'org.eclipse.jetty:jetty-rewrite'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-security'
-  api 'org.eclipse.jetty:jetty-security'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-server'
-  api 'org.eclipse.jetty:jetty-server'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-servlet'
-  api 'org.eclipse.jetty:jetty-servlet'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-servlets'
-  api 'org.eclipse.jetty:jetty-servlets'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-util'
-  api 'org.eclipse.jetty:jetty-util'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-webapp'
-  api 'org.eclipse.jetty:jetty-webapp'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-xml'
-  api 'org.eclipse.jetty:jetty-xml'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-alpn-server'
-  api 'org.eclipse.jetty:jetty-alpn-server'
-  permitUnusedDeclared 'org.eclipse.jetty:jetty-alpn-java-server'
-  api('org.eclipse.jetty:jetty-alpn-java-server', {
+  serverLib 'org.eclipse.jetty:jetty-continuation'
+  serverLib 'org.eclipse.jetty:jetty-deploy'
+  serverLib 'org.eclipse.jetty:jetty-http'
+  serverLib 'org.eclipse.jetty:jetty-io'
+  serverLib 'org.eclipse.jetty:jetty-jmx'
+  serverLib 'org.eclipse.jetty:jetty-rewrite'
+  serverLib 'org.eclipse.jetty:jetty-security'
+  serverLib 'org.eclipse.jetty:jetty-server'
+  serverLib 'org.eclipse.jetty:jetty-servlet'
+  serverLib 'org.eclipse.jetty:jetty-servlets'
+  serverLib 'org.eclipse.jetty:jetty-util'
+  serverLib 'org.eclipse.jetty:jetty-webapp'
+  serverLib 'org.eclipse.jetty:jetty-xml'
+  serverLib 'org.eclipse.jetty:jetty-alpn-server'
+  serverLib('org.eclipse.jetty:jetty-alpn-java-server', {
     exclude group: "org.eclipse.jetty.alpn", module: "alpn-api"
   })
 
-  permitUnusedDeclared 'org.eclipse.jetty.http2:http2-server'
-  api 'org.eclipse.jetty.http2:http2-server'
-  permitUnusedDeclared 'org.eclipse.jetty.http2:http2-common'
-  api 'org.eclipse.jetty.http2:http2-common'
-  permitUnusedDeclared 'org.eclipse.jetty.http2:http2-hpack'
-  api 'org.eclipse.jetty.http2:http2-hpack'
+  serverLib 'org.eclipse.jetty.http2:http2-server'
+  serverLib 'org.eclipse.jetty.http2:http2-common'
+  serverLib 'org.eclipse.jetty.http2:http2-hpack'
 
-  permitUnusedDeclared 'javax.servlet:javax.servlet-api'
-  api 'javax.servlet:javax.servlet-api'
+  serverLib 'javax.servlet:javax.servlet-api'
 
   libExt 'com.lmax:disruptor'
   libExt 'org.slf4j:jcl-over-slf4j'
@@ -108,6 +71,16 @@ dependencies {
   libExt 'org.apache.logging.log4j:log4j-slf4j-impl'
   libExt 'org.apache.logging.log4j:log4j-web'
 
+  libExt('io.dropwizard.metrics:metrics-core', {
+    exclude group: "com.rabbitmq", module: "amqp-client"
+  })
+  libExt('io.dropwizard.metrics:metrics-graphite', {
+    exclude group: "com.rabbitmq", module: "amqp-client"
+  })
+  libExt 'io.dropwizard.metrics:metrics-jetty9'
+  libExt 'io.dropwizard.metrics:metrics-jvm'
+  libExt 'io.dropwizard.metrics:metrics-jmx'
+
   webapp project(path: ":solr:webapp", configuration: "war")
 
   startJar('org.eclipse.jetty:jetty-start::shaded', {
@@ -119,7 +92,6 @@ dependencies {
 afterEvaluate {
   configurations {
     jarValidation.extendsFrom startJar
-    jarValidation.extendsFrom libExt
   }
 }
 
@@ -138,12 +110,12 @@ task assemblePackaging(type: Sync) {
     include "README.md"
   })
 
-  from(configurations.compileClasspath, {
-    into "lib/"
+  from(configurations.libExt - configurations.serverLib, {
+    into "lib/ext"
   })
 
-  from(configurations.libExt, {
-    into "lib/ext"
+  from(configurations.serverLib, {
+    into "lib/"
   })
 
   from { project.configurations.startJar.singleFile } {
diff --git a/solr/test-framework/build.gradle b/solr/test-framework/build.gradle
index bdb078520df..014024b3f5b 100644
--- a/solr/test-framework/build.gradle
+++ b/solr/test-framework/build.gradle
@@ -65,7 +65,7 @@ dependencies {
 
   implementation 'javax.servlet:javax.servlet-api'
   implementation 'org.eclipse.jetty:jetty-server'
-  implementation 'org.eclipse.jetty:jetty-servlet'
+  api 'org.eclipse.jetty:jetty-servlet'
   implementation 'org.eclipse.jetty:jetty-util'
 
   implementation 'com.carrotsearch.randomizedtesting:randomizedtesting-runner'
diff --git a/solr/webapp/build.gradle b/solr/webapp/build.gradle
index f412800c8d1..063ad7d89cd 100644
--- a/solr/webapp/build.gradle
+++ b/solr/webapp/build.gradle
@@ -24,21 +24,18 @@ description = 'Solr webapp'
 
 configurations {
   war {}
+  serverLib {}
+  solrJettyClientLib {}
+  solrCore {}
 }
 
 dependencies {
   permitUnusedDeclared project(":solr:core")
-  implementation(project(":solr:core"), {
-    exclude module: "server"
-
-    // Exclude additional deps from core and logging deps to sync up with ant.
-    // This is suspicious that we have to do it though.
-    exclude group: "org.apache.kerby", module: "kerby-config"
-    exclude group: "org.apache.kerby", module: "kerby-util"
-    exclude group: "org.apache.kerby", module: "kerb-crypto"
-    exclude group: "org.slf4j"
-    exclude group: "org.apache.logging.log4j"
-  })
+  serverLib project(path: ":solr:server", configuration: "libExt")
+  serverLib project(path: ":solr:server", configuration: "serverLib")
+  solrCore project(":solr:core")
+  solrJettyClientLib project(path: ":solr:core", configuration: "jettyClientImplementation")
+  implementation(configurations.solrCore - configurations.serverLib + configurations.solrJettyClientLib)
 }
 
 war {
diff --git a/versions.lock b/versions.lock
index 2f7c3eb71ec..564ce3b0733 100644
--- a/versions.lock
+++ b/versions.lock
@@ -147,9 +147,12 @@ org.apache.kerby:kerby-asn1:1.0.1 (1 constraints: fd0be9f4)
 org.apache.kerby:kerby-config:1.0.1 (4 constraints: 4d3182b9)
 org.apache.kerby:kerby-pkix:1.0.1 (1 constraints: 710bfce4)
 org.apache.kerby:kerby-util:1.0.1 (2 constraints: 6518bdb6)
-org.apache.logging.log4j:log4j-api:2.17.1 (4 constraints: dc3387b4)
-org.apache.logging.log4j:log4j-core:2.17.1 (2 constraints: 13166125)
+org.apache.logging.log4j:log4j-1.2-api:2.17.1 (1 constraints: 3d05453b)
+org.apache.logging.log4j:log4j-api:2.17.1 (5 constraints: 2e42e503)
+org.apache.logging.log4j:log4j-core:2.17.1 (4 constraints: 8739df28)
+org.apache.logging.log4j:log4j-layout-template-json:2.17.1 (1 constraints: 3d05453b)
 org.apache.logging.log4j:log4j-slf4j-impl:2.17.1 (1 constraints: 3d05453b)
+org.apache.logging.log4j:log4j-web:2.17.1 (1 constraints: 3d05453b)
 org.apache.lucene:lucene-analysis-common:9.0.0 (10 constraints: ac9e842f)
 org.apache.lucene:lucene-analysis-icu:9.0.0 (1 constraints: 0b051836)
 org.apache.lucene:lucene-analysis-kuromoji:9.0.0 (1 constraints: 0b051836)
@@ -259,7 +262,7 @@ org.ow2.asm:asm-commons:7.2 (1 constraints: 6b0f7267)
 org.quicktheories:quicktheories:0.26 (1 constraints: dc04f530)
 org.reactivestreams:reactive-streams:1.0.3 (3 constraints: 3c2b02fd)
 org.slf4j:jcl-over-slf4j:1.7.36 (3 constraints: 05188eb8)
-org.slf4j:jul-to-slf4j:1.7.36 (2 constraints: 1723911a)
+org.slf4j:jul-to-slf4j:1.7.36 (3 constraints: 5928c263)
 org.slf4j:slf4j-api:1.7.36 (38 constraints: 9dd389ac)
 org.tallison:isoparser:1.9.41.7 (1 constraints: fb0c5528)
 org.tallison:jmatio:1.5 (1 constraints: ff0b57e9)
@@ -334,7 +337,6 @@ org.apache.kerby:kerb-common:1.0.1 (2 constraints: a51841ca)
 org.apache.kerby:kerb-identity:1.0.1 (1 constraints: 5f0cb602)
 org.apache.kerby:kerb-server:1.0.1 (1 constraints: d10b65f2)
 org.apache.kerby:kerb-simplekdc:1.0.1 (1 constraints: dc0d7e3e)
-org.apache.logging.log4j:log4j-1.2-api:2.17.1 (1 constraints: 3d05453b)
 org.freemarker:freemarker:2.3.31 (1 constraints: ef0e9271)
 org.glassfish:jakarta.el:3.0.3 (1 constraints: 941562b9)
 org.hdrhistogram:HdrHistogram:2.1.12 (1 constraints: 520d2029)