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)