This is an automated email from the ASF dual-hosted git repository.
mikexue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/eventmesh.git
The following commit(s) were added to refs/heads/master by this push:
new 1fdb5b200 [ISSUE #4700] Remove logging backends from runtime deps
(#4719)
1fdb5b200 is described below
commit 1fdb5b2000a2f94e761367e32e901b9156f1d310
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Thu Apr 18 08:27:11 2024 +0200
[ISSUE #4700] Remove logging backends from runtime deps (#4719)
* [ISSUE #4700] Remove logging backends from runtime deps
This PR removes all the logging backends from the Maven artifacts. As
explained in #4700 libraries should only depend on logging APIs, not
logging implementations the same way web applications depend on the
Servlet API, not its implementations.
The logging backends are added to the `dist` folder to be included in
the TAR binary distribution.
* Fix licenses
* Fix Logback exclusions
* Fix license check
* Fix `printProjects` according to the review
* Add logging backend to `eventmesh-starter`
* Remove task description
* Fix task dependencies of task `installPlugin`
* Fix `installPlugin` task
* Add comment about exclusions
* Minimize changes to current configuration
This commit minimizes the changes to EventMesh dependencies.
Since a global exclusion is not an effective way to stop propagating
logging backends as **transitive** dependencies we:
* explictly remove logging backends from third-party dependencies that
include them: RocketMQ, Pulsar, Spring Boot and Zookeeper,
* restore Log4j Core as dependency of `eventmesh-common`,
* exclude Log4j Core as dependency of `eventmesh-sdk-java`.
* Add comments to remove exclusions after upgrade
* Make `installPlugin` independent from `dist`
* Make `copy` tasks easier to understand
* Add `eventmesh-common` to EventMesh OpenConnect deps
* Refactor RocketMQ deps
* Delete `output.dirs`
* Fix typo
* Remove last `outputs.dir`
* Remove dependencies from `installPlugin`
* Add `eventmesh-common` to OpenConnect artifacts
---
.gitignore | 4 +-
build.gradle | 198 +++++++++------------
eventmesh-common/build.gradle | 5 +-
.../eventmesh-connector-pravega/build.gradle | 5 -
.../eventmesh-connector-pulsar/build.gradle | 23 ++-
.../eventmesh-connector-rabbitmq/build.gradle | 5 -
.../eventmesh-connector-rocketmq/build.gradle | 11 +-
.../eventmesh-connector-slack/build.gradle | 6 -
.../eventmesh-connector-spring/build.gradle | 21 ++-
.../eventmesh-connector-wechat/build.gradle | 6 -
.../eventmesh-connector-wecom/build.gradle | 6 -
eventmesh-examples/build.gradle | 7 +-
.../eventmesh-meta-zookeeper/build.gradle | 10 +-
.../eventmesh-openconnect-java/build.gradle | 4 +-
.../build.gradle | 6 +-
.../build.gradle | 4 +-
.../eventmesh-retry-rocketmq/build.gradle | 10 +-
eventmesh-sdks/eventmesh-sdk-java/build.gradle | 6 +-
.../eventmesh-storage-kafka/build.gradle | 4 -
.../eventmesh-storage-pulsar/build.gradle | 25 ++-
.../eventmesh-storage-rabbitmq/build.gradle | 5 -
.../eventmesh-storage-redis/build.gradle | 4 -
.../eventmesh-storage-rocketmq/build.gradle | 17 +-
tools/dependency-check/check-dependencies.sh | 8 +-
tools/dependency-check/known-dependencies.txt | 5 -
.../licenses/java/LICENSE-logback-core.txt | 14 --
.../licenses/java/LICENSE-slf4j-simple.txt | 21 ---
27 files changed, 189 insertions(+), 251 deletions(-)
diff --git a/.gitignore b/.gitignore
index a22c82f79..2379b9f17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,7 +27,7 @@ node_modules
h2/db.mv.db
# license check tmp file
-all-dependencies.txt
+/tools/dependency-check/all-dependencies.txt
self-modules.txt
third-party-dependencies.txt
@@ -50,4 +50,4 @@ bld/
**/org/apache/eventmesh/connector/jdbc/antlr4/autogeneration/*
#rust
-Cargo.lock
\ No newline at end of file
+Cargo.lock
diff --git a/build.gradle b/build.gradle
index 3cd8460b9..fbaaa9264 100644
--- a/build.gradle
+++ b/build.gradle
@@ -139,7 +139,58 @@ allprojects {
}
}
-task tar(type: Tar) {
+tasks.register('dist') {
+ subprojects.forEach { subProject ->
+ dependsOn("${subProject.path}:jar")
+ }
+ def includedProjects =
+ ["eventmesh-common",
+ "eventmesh-meta:eventmesh-meta-api",
+ "eventmesh-metrics-plugin:eventmesh-metrics-api",
+ "eventmesh-protocol-plugin:eventmesh-protocol-api",
+ "eventmesh-retry:eventmesh-retry-api",
+ "eventmesh-runtime",
+ "eventmesh-security-plugin:eventmesh-security-api",
+ "eventmesh-spi",
+ "eventmesh-starter",
+ "eventmesh-storage-plugin:eventmesh-storage-api",
+ "eventmesh-trace-plugin:eventmesh-trace-api",
+ "eventmesh-webhook:eventmesh-webhook-api",
+ "eventmesh-webhook:eventmesh-webhook-admin",
+ "eventmesh-webhook:eventmesh-webhook-receive"]
+ doLast {
+ includedProjects.each {
+ def subProject = findProject(it)
+ logger.lifecycle('Install module: module: {}', subProject.name)
+ copy {
+ from subProject.jar.archivePath
+ into rootProject.file('dist/apps')
+ }
+ copy {
+ from subProject.file('bin')
+ into rootProject.file('dist/bin')
+ }
+ copy {
+ from subProject.file('conf')
+ from subProject.sourceSets.main.resources.srcDirs
+ into rootProject.file('dist/conf')
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ exclude 'META-INF'
+ }
+ copy {
+ from subProject.configurations.runtimeClasspath
+ into rootProject.file('dist/lib')
+ exclude 'eventmesh-*'
+ }
+ }
+ copy {
+ from 'tools/third-party-licenses'
+ into rootProject.file('dist')
+ }
+ }
+}
+
+tasks.register('tar', Tar) {
archiveBaseName.set(project.name)
archiveVersion.set(project.version.toString())
archiveExtension.set('tar.gz')
@@ -150,7 +201,7 @@ task tar(type: Tar) {
}
}
-task zip(type: Zip) {
+tasks.register('zip', Zip) {
archiveBaseName.set(project.name)
archiveVersion.set(project.version.toString())
archiveExtension.set('zip')
@@ -160,50 +211,39 @@ task zip(type: Zip) {
}
}
-task installPlugin() {
- if (!new File("${rootDir}/dist").exists()) {
- return
+tasks.register('installPlugin') {
+ var pluginProjects = subprojects.findAll {
+ it.file('gradle.properties').exists()
+ && it.properties.containsKey('pluginType')
+ && it.properties.containsKey('pluginName')
+ }
+ doLast {
+ String[] libJars =
java.util.Optional.ofNullable(file('dist/lib').list()).orElse(new String[0])
+ pluginProjects.forEach(subProject -> {
+ var pluginType = subProject.properties.get('pluginType')
+ var pluginName = subProject.properties.get('pluginName')
+ logger.lifecycle('Install plugin: pluginType: {},
pluginInstanceName: {}, module: {}', pluginType,
+ pluginName, subProject.name)
+ copy {
+ from subProject.jar.archivePath
+ into
rootProject.file("dist/plugin/${pluginType}/${pluginName}")
+ }
+ copy {
+ from subProject.configurations.runtimeClasspath
+ into
rootProject.file("dist/plugin/${pluginType}/${pluginName}")
+ exclude(libJars)
+ }
+ copy {
+ from subProject.file('conf')
+ from subProject.sourceSets.main.resources.srcDirs
+ into rootProject.file("dist/conf")
+ exclude 'META-INF'
+ }
+ })
}
- String[] libJars = java.util.Optional.ofNullable(new
File("${rootDir}/dist/lib").list()).orElseGet(() -> new String[0])
- getAllprojects().forEach(subProject -> {
- var file = new File("${subProject.projectDir}/gradle.properties")
- if (!file.exists()) {
- return
- }
- var properties = new Properties()
- properties.load(new FileInputStream(file))
- var pluginType = properties.getProperty("pluginType")
- var pluginName = properties.getProperty("pluginName")
- if (pluginType == null || pluginName == null) {
- return
- }
- var pluginFile = new
File("${rootDir}/dist/plugin/${pluginType}/${pluginName}")
- if (pluginFile.exists()) {
- return
- }
- pluginFile.mkdirs()
- println String.format(
- "install plugin, pluginType: %s, pluginInstanceName: %s,
module: %s", pluginType, pluginName, subProject.getName()
- )
-
- copy {
- into "${rootDir}/dist/plugin/${pluginType}/${pluginName}"
- from "${subProject.getProjectDir()}/dist/apps"
- }
- copy {
- into "${rootDir}/dist/plugin/${pluginType}/${pluginName}"
- from "${subProject.getProjectDir()}/dist/lib/"
- exclude(libJars)
- }
- copy {
- into "${rootDir}/dist/conf"
- from "${subProject.getProjectDir()}/dist/conf"
- exclude 'META-INF'
- }
- })
}
-task printProjects() {
+tasks.register('printProjects') {
getAllprojects().forEach(subProject -> {
if ("EventMesh".equals(subProject.getName())) {
return
@@ -303,77 +343,6 @@ subprojects {
}
}
- task dist(dependsOn: ['jar']) {
- doFirst {
- new File("${projectDir}/dist/bin").mkdirs()
- new File("${projectDir}/dist/apps").mkdirs()
- new File("${projectDir}/dist/conf").mkdirs()
- new File("${projectDir}/dist/lib").mkdirs()
- new File("${projectDir}/dist/licenses").mkdirs()
- }
- Set<String> rootProject = ["eventmesh-common",
- "eventmesh-storage-api",
- "eventmesh-metrics-api",
- "eventmesh-meta-api",
- "eventmesh-trace-api",
- "eventmesh-retry-api",
- "eventmesh-runtime",
- "eventmesh-security-api",
- "eventmesh-protocol-api",
- "eventmesh-starter",
- "eventmesh-spi",
- "eventmesh-webhook-api",
- "eventmesh-webhook-admin",
- "eventmesh-webhook-receive"]
- doLast {
- copy {
- into("${projectDir}/dist/apps")
- from project.jar.getArchivePath()
- }
- copy {
- into("${projectDir}/dist/lib")
- from project.configurations.runtimeClasspath
- }
- copy {
- into("${projectDir}/dist/bin")
- from 'bin'
- }
- copy {
- into("${projectDir}/dist/conf")
- from 'conf', sourceSets.main.resources.srcDirs
- setDuplicatesStrategy(DuplicatesStrategy.EXCLUDE)
- exclude 'META-INF'
- }
- if (rootProject.contains(project.name)) {
- new File("${rootDir}/dist/apps").mkdirs()
- new File("${rootDir}/dist/lib").mkdirs()
- new File("${rootDir}/dist/bin").mkdirs()
- new File("${rootDir}/dist/conf").mkdirs()
- copy {
- into("${rootDir}/dist/apps")
- from "${projectDir}/dist/apps"
- }
- copy {
- into "${rootDir}/dist/lib"
- from "${projectDir}/dist/lib"
- exclude "eventmesh-*"
- }
- copy {
- into "${rootDir}/dist/bin"
- from "${projectDir}/dist/bin"
- }
- copy {
- into "${rootDir}/dist/conf"
- from "${projectDir}/dist/conf"
- }
- }
- copy {
- into "${rootDir}/dist"
- from "${rootDir}/tools/third-party-licenses"
- }
- }
- }
-
javadoc {
source = sourceSets.main.java
destinationDir = reporting.file("javadoc")
@@ -491,7 +460,6 @@ subprojects {
dependency "org.apache.logging.log4j:log4j-api:${log4jVersion}"
dependency "org.apache.logging.log4j:log4j-core:${log4jVersion}"
dependency
"org.apache.logging.log4j:log4j-slf4j2-impl:${log4jVersion}"
- dependency
"org.apache.logging.log4j:log4j-slf4j-impl:${log4jVersion}" // used with SLF4J
1.7.x or older for third-party dependencies
dependency "com.lmax:disruptor:3.4.2"
diff --git a/eventmesh-common/build.gradle b/eventmesh-common/build.gradle
index a6dc2cd26..23f9455e1 100644
--- a/eventmesh-common/build.gradle
+++ b/eventmesh-common/build.gradle
@@ -32,9 +32,8 @@ dependencies {
api "com.alibaba.fastjson2:fastjson2"
- implementation "org.apache.logging.log4j:log4j-api"
- implementation "org.apache.logging.log4j:log4j-core"
- implementation "org.apache.logging.log4j:log4j-slf4j2-impl"
+ runtimeOnly "org.apache.logging.log4j:log4j-core"
+ runtimeOnly "org.apache.logging.log4j:log4j-slf4j2-impl"
implementation 'com.github.seancfoley:ipaddress'
diff --git a/eventmesh-connectors/eventmesh-connector-pravega/build.gradle
b/eventmesh-connectors/eventmesh-connector-pravega/build.gradle
index 036533431..24876409f 100644
--- a/eventmesh-connectors/eventmesh-connector-pravega/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-pravega/build.gradle
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
-}
-
dependencies {
api project(":eventmesh-openconnect:eventmesh-openconnect-java")
implementation project(":eventmesh-common")
diff --git a/eventmesh-connectors/eventmesh-connector-pulsar/build.gradle
b/eventmesh-connectors/eventmesh-connector-pulsar/build.gradle
index 4a532ec2b..f087842ea 100644
--- a/eventmesh-connectors/eventmesh-connector-pulsar/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-pulsar/build.gradle
@@ -15,12 +15,27 @@
* limitations under the License.
*/
-List pulsar = [
- "org.apache.pulsar:pulsar-client:$pulsar_version"
-]
dependencies {
implementation project(":eventmesh-openconnect:eventmesh-openconnect-java")
- implementation pulsar
+
+ /*
+ * TODO: This is a shaded artifact that contains 20 MiB of external
libraries. It could probably be replaced by:
+ *
+ * implementation "org.apache.pulsar:pulsar-client-api:$pulsar_version"
+ * runtimeOnly
"org.apache.pulsar:pulsar-client-original:$pulsar_version"
+ *
+ * The exclusions can be removed after an upgrade of the transitive:
+ *
+ * "org.apache.bookkeeper:bookkeeper"
+ *
+ * dependency to 4.15.4 or higher (used by Pulsar 2.11.2 or higher).
+ */
+ implementation("org.apache.pulsar:pulsar-client:$pulsar_version") {
+ // Remove logging backend implementations
+ exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
+ exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
+ }
+
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
\ No newline at end of file
diff --git a/eventmesh-connectors/eventmesh-connector-rabbitmq/build.gradle
b/eventmesh-connectors/eventmesh-connector-rabbitmq/build.gradle
index b4edbe1f8..f96d81bf6 100644
--- a/eventmesh-connectors/eventmesh-connector-rabbitmq/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-rabbitmq/build.gradle
@@ -16,11 +16,6 @@
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
-}
-
dependencies {
api project(":eventmesh-openconnect:eventmesh-openconnect-java")
implementation project(":eventmesh-common")
diff --git a/eventmesh-connectors/eventmesh-connector-rocketmq/build.gradle
b/eventmesh-connectors/eventmesh-connector-rocketmq/build.gradle
index 769e9c6cf..64c43e29d 100644
--- a/eventmesh-connectors/eventmesh-connector-rocketmq/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-rocketmq/build.gradle
@@ -34,7 +34,16 @@ List rocketmq = [
dependencies {
api project(":eventmesh-openconnect:eventmesh-openconnect-java")
implementation project(":eventmesh-common")
- implementation rocketmq
+ /*
+ * The exclusions can be removed after this issue is fixed:
+ * https://github.com/apache/rocketmq/issues/5347
+ */
+ rocketmq.each {
+ implementation(it) {
+ exclude group: 'ch.qos.logback', module: 'logback-classic'
+ }
+ }
+
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation "org.mockito:mockito-core"
diff --git a/eventmesh-connectors/eventmesh-connector-slack/build.gradle
b/eventmesh-connectors/eventmesh-connector-slack/build.gradle
index ad66b78b9..851887e3c 100644
--- a/eventmesh-connectors/eventmesh-connector-slack/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-slack/build.gradle
@@ -15,12 +15,6 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
- testImplementation.exclude group: 'org.apache.logging.log4j', module:
'log4j-to-slf4j'
-}
-
dependencies {
implementation project(":eventmesh-common")
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
diff --git a/eventmesh-connectors/eventmesh-connector-spring/build.gradle
b/eventmesh-connectors/eventmesh-connector-spring/build.gradle
index 48459b900..e0680d2bf 100644
--- a/eventmesh-connectors/eventmesh-connector-spring/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-spring/build.gradle
@@ -15,20 +15,23 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
- implementation.exclude group: 'org.apache.logging.log4j', module:
'log4j-to-slf4j'
- testImplementation.exclude group: 'org.apache.logging.log4j', module:
'log4j-to-slf4j'
-}
-
dependencies {
api project(":eventmesh-openconnect:eventmesh-openconnect-java")
implementation project(":eventmesh-common")
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
- implementation
"org.springframework.boot:spring-boot-starter:$spring_boot_version"
- implementation
"org.springframework.boot:spring-boot-starter-validation:$spring_boot_version"
+
+ /*
+ * TODO: Are these dependencies necessary? The source code only requires
these two dependencies
+ * that do not propagate logging backends:
+ *
+ * api "org.springframework:spring-context:$spring_version"
+ * implementation
"org.springframework.boot:spring-boot-autoconfigure:$spring_boot_version"
+ */
+
implementation("org.springframework.boot:spring-boot-starter-validation:$spring_boot_version")
{
+ exclude group: 'org.springframework.boot', module:
'spring-boot-starter-logging'
+ }
implementation "org.springframework:spring-messaging:$spring_version"
+
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
diff --git a/eventmesh-connectors/eventmesh-connector-wechat/build.gradle
b/eventmesh-connectors/eventmesh-connector-wechat/build.gradle
index 9a73345d1..afd4e115c 100644
--- a/eventmesh-connectors/eventmesh-connector-wechat/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-wechat/build.gradle
@@ -15,12 +15,6 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
- testImplementation.exclude group: 'org.apache.logging.log4j', module:
'log4j-to-slf4j'
-}
-
dependencies {
implementation project(":eventmesh-common")
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
diff --git a/eventmesh-connectors/eventmesh-connector-wecom/build.gradle
b/eventmesh-connectors/eventmesh-connector-wecom/build.gradle
index 746a4f372..e89567c6f 100644
--- a/eventmesh-connectors/eventmesh-connector-wecom/build.gradle
+++ b/eventmesh-connectors/eventmesh-connector-wecom/build.gradle
@@ -15,12 +15,6 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
- testImplementation.exclude group: 'org.apache.logging.log4j', module:
'log4j-to-slf4j'
-}
-
dependencies {
implementation project(":eventmesh-common")
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
diff --git a/eventmesh-examples/build.gradle b/eventmesh-examples/build.gradle
index 9ef70836b..212b56779 100644
--- a/eventmesh-examples/build.gradle
+++ b/eventmesh-examples/build.gradle
@@ -17,15 +17,14 @@
def grpcVersion = '1.43.2'
-configurations {
- implementation.exclude group: 'org.springframework.boot', module:
'spring-boot-starter-logging'
-}
-
dependencies {
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
implementation project(":eventmesh-common")
implementation project(":eventmesh-storage-plugin:eventmesh-storage-api")
implementation project(":eventmesh-connectors:eventmesh-connector-spring")
+ implementation('org.springframework.boot:spring-boot-starter') {
+ exclude module: 'spring-boot-starter-logging'
+ }
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'io.netty:netty-all'
implementation "io.cloudevents:cloudevents-core"
diff --git a/eventmesh-meta/eventmesh-meta-zookeeper/build.gradle
b/eventmesh-meta/eventmesh-meta-zookeeper/build.gradle
index 1d8c871e2..149f78e99 100644
--- a/eventmesh-meta/eventmesh-meta-zookeeper/build.gradle
+++ b/eventmesh-meta/eventmesh-meta-zookeeper/build.gradle
@@ -20,7 +20,15 @@ dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
- implementation 'org.apache.zookeeper:zookeeper'
+ /*
+ * The exclusion can be removed once ZOOKEEPER-4820 has been fixed.
+ *
+ * See https://github.com/apache/zookeeper/pull/2155
+ */
+ implementation('org.apache.zookeeper:zookeeper') {
+ exclude group: 'ch.qos.logback', module: 'logback-core'
+ exclude group: 'ch.qos.logback', module: 'logback-classic'
+ }
implementation 'org.apache.curator:curator-client'
implementation 'org.apache.curator:curator-framework'
implementation 'org.apache.curator:curator-recipes'
diff --git a/eventmesh-openconnect/eventmesh-openconnect-java/build.gradle
b/eventmesh-openconnect/eventmesh-openconnect-java/build.gradle
index d47a81a4f..b41f7fbfa 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-java/build.gradle
+++ b/eventmesh-openconnect/eventmesh-openconnect-java/build.gradle
@@ -17,9 +17,6 @@
dependencies {
api "org.slf4j:slf4j-api"
- implementation "org.apache.logging.log4j:log4j-api"
- implementation "org.apache.logging.log4j:log4j-core"
- implementation "org.apache.logging.log4j:log4j-slf4j2-impl"
implementation "com.fasterxml.jackson.core:jackson-databind"
implementation "com.fasterxml.jackson.core:jackson-core"
@@ -29,6 +26,7 @@ dependencies {
api project
(":eventmesh-openconnect:eventmesh-openconnect-offsetmgmt-plugin:eventmesh-openconnect-offsetmgmt-api")
implementation project
(":eventmesh-openconnect:eventmesh-openconnect-offsetmgmt-plugin:eventmesh-openconnect-offsetmgmt-nacos")
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
+ implementation project(":eventmesh-common")
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
diff --git
a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/build.gradle
b/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/build.gradle
index 3f5f0a240..537c74faf 100644
--- a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/build.gradle
+++ b/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/build.gradle
@@ -17,17 +17,15 @@
dependencies {
api "org.slf4j:slf4j-api"
- implementation "org.apache.logging.log4j:log4j-api"
- implementation "org.apache.logging.log4j:log4j-core"
- implementation "org.apache.logging.log4j:log4j-slf4j2-impl"
implementation "com.fasterxml.jackson.core:jackson-databind"
implementation "com.fasterxml.jackson.core:jackson-core"
implementation "com.fasterxml.jackson.core:jackson-annotations"
implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml"
+ implementation project(":eventmesh-common")
implementation project(":eventmesh-sdks:eventmesh-sdk-java")
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
-}
\ No newline at end of file
+}
diff --git
a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/build.gradle
b/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/build.gradle
index c5ac62b00..97c3b8c33 100644
---
a/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/build.gradle
+++
b/eventmesh-openconnect/eventmesh-openconnect-offsetmgmt-plugin/eventmesh-openconnect-offsetmgmt-api/build.gradle
@@ -18,12 +18,10 @@
dependencies {
api project(":eventmesh-spi")
api "org.slf4j:slf4j-api"
- implementation "org.apache.logging.log4j:log4j-api"
- implementation "org.apache.logging.log4j:log4j-core"
- implementation "org.apache.logging.log4j:log4j-slf4j2-impl"
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
+ implementation project(":eventmesh-common")
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
diff --git a/eventmesh-retry/eventmesh-retry-rocketmq/build.gradle
b/eventmesh-retry/eventmesh-retry-rocketmq/build.gradle
index 3d33929b4..883081271 100644
--- a/eventmesh-retry/eventmesh-retry-rocketmq/build.gradle
+++ b/eventmesh-retry/eventmesh-retry-rocketmq/build.gradle
@@ -33,7 +33,15 @@ List rocketmq = [
dependencies {
implementation project(":eventmesh-storage-plugin:eventmesh-storage-api")
implementation
project(":eventmesh-storage-plugin:eventmesh-storage-rocketmq")
- implementation rocketmq
+ /*
+ * The exclusions can be removed after this issue is fixed:
+ * https://github.com/apache/rocketmq/issues/5347
+ */
+ rocketmq.each {
+ implementation(it) {
+ exclude group: 'ch.qos.logback', module: 'logback-classic'
+ }
+ }
implementation project(":eventmesh-retry:eventmesh-retry-api")
implementation project(":eventmesh-common")
diff --git a/eventmesh-sdks/eventmesh-sdk-java/build.gradle
b/eventmesh-sdks/eventmesh-sdk-java/build.gradle
index db1555403..c83b77d26 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/build.gradle
+++ b/eventmesh-sdks/eventmesh-sdk-java/build.gradle
@@ -18,7 +18,11 @@
def grpcVersion = '1.43.2'
dependencies {
- api project(":eventmesh-common")
+ api(project(":eventmesh-common")) {
+ // Remove logging backend implementations to allow users to choose
their own
+ exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
+ exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j2-impl'
+ }
implementation "com.fasterxml.jackson.core:jackson-databind"
implementation "com.fasterxml.jackson.core:jackson-core"
diff --git a/eventmesh-storage-plugin/eventmesh-storage-kafka/build.gradle
b/eventmesh-storage-plugin/eventmesh-storage-kafka/build.gradle
index d776cc46a..1a467ed8c 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-kafka/build.gradle
+++ b/eventmesh-storage-plugin/eventmesh-storage-kafka/build.gradle
@@ -14,10 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
-}
dependencies {
implementation project(":eventmesh-storage-plugin:eventmesh-storage-api")
diff --git a/eventmesh-storage-plugin/eventmesh-storage-pulsar/build.gradle
b/eventmesh-storage-plugin/eventmesh-storage-pulsar/build.gradle
index 77922e241..d439016be 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-pulsar/build.gradle
+++ b/eventmesh-storage-plugin/eventmesh-storage-pulsar/build.gradle
@@ -15,19 +15,30 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
-}
-
dependencies {
implementation project(":eventmesh-common")
implementation project(":eventmesh-storage-plugin:eventmesh-storage-api")
- implementation 'org.apache.pulsar:pulsar-client:2.10.1'
+
+ /*
+ * TODO: This is a shaded artifact that contains 20 MiB of external
libraries. It could probably be replaced by:
+ *
+ * implementation "org.apache.pulsar:pulsar-client-api:$pulsar_version"
+ * runtimeOnly
"org.apache.pulsar:pulsar-client-original:$pulsar_version"
+ *
+ * The exclusions can be removed after an upgrade of the transitive:
+ *
+ * "org.apache.bookkeeper:bookkeeper"
+ *
+ * dependency to 4.15.4 or higher (used by Pulsar 2.11.2 or higher).
+ */
+ implementation('org.apache.pulsar:pulsar-client:2.10.1') {
+ // Remove logging backend implementations
+ exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
+ exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
+ }
testImplementation
project(":eventmesh-storage-plugin:eventmesh-storage-api")
testImplementation project(":eventmesh-common")
- testImplementation 'org.apache.pulsar:pulsar-client:2.10.1'
implementation 'io.cloudevents:cloudevents-json-jackson'
diff --git a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/build.gradle
b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/build.gradle
index 69b4f75ba..2e8ddac44 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/build.gradle
+++ b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/build.gradle
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
-}
-
dependencies {
implementation project(":eventmesh-storage-plugin:eventmesh-storage-api")
implementation project(":eventmesh-common")
diff --git a/eventmesh-storage-plugin/eventmesh-storage-redis/build.gradle
b/eventmesh-storage-plugin/eventmesh-storage-redis/build.gradle
index 5a103cb8e..bec076763 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-redis/build.gradle
+++ b/eventmesh-storage-plugin/eventmesh-storage-redis/build.gradle
@@ -15,10 +15,6 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'org.slf4j', module: 'slf4j-simple'
-}
-
dependencies {
implementation project(":eventmesh-common")
implementation project(":eventmesh-storage-plugin:eventmesh-storage-api")
diff --git a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/build.gradle
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/build.gradle
index be3024009..fd14357fb 100644
--- a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/build.gradle
+++ b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/build.gradle
@@ -15,11 +15,6 @@
* limitations under the License.
*/
-configurations {
- implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
- implementation.exclude group: 'log4j', module: 'log4j'
-}
-
List rocketmq = [
"org.apache.rocketmq:rocketmq-client:$rocketmq_version",
"org.apache.rocketmq:rocketmq-broker:$rocketmq_version",
@@ -39,7 +34,15 @@ List rocketmq = [
dependencies {
implementation project(":eventmesh-common")
implementation project(":eventmesh-storage-plugin:eventmesh-storage-api")
- implementation rocketmq
+ /*
+ * The exclusions can be removed after this issue is fixed:
+ * https://github.com/apache/rocketmq/issues/5347
+ */
+ rocketmq.each {
+ implementation(it) {
+ exclude group: 'ch.qos.logback', module: 'logback-classic'
+ }
+ }
testImplementation
project(":eventmesh-storage-plugin:eventmesh-storage-api")
testImplementation project(":eventmesh-common")
@@ -47,8 +50,6 @@ dependencies {
testImplementation "org.mockito:mockito-core"
testImplementation "org.mockito:mockito-junit-jupiter"
- testImplementation rocketmq
-
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
diff --git a/tools/dependency-check/check-dependencies.sh
b/tools/dependency-check/check-dependencies.sh
old mode 100644
new mode 100755
index 5353df817..3842323c1
--- a/tools/dependency-check/check-dependencies.sh
+++ b/tools/dependency-check/check-dependencies.sh
@@ -1,4 +1,4 @@
-#!/usr/bin bash
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
@@ -34,14 +34,14 @@ self_modules_txt='tools/dependency-check/self-modules.txt'
# store all third part dependencies
third_party_dependencies_txt='tools/dependency-check/third-party-dependencies.txt'
-mkdir $decompress_conf || true
+mkdir -p $decompress_conf
tar -zxf build/eventmesh*.tar.gz -C $decompress_conf
./gradlew printProjects | grep '.jar' > "$self_modules_txt"
-find "$decompress_conf" -name "*.jar" -exec basename {} \; | uniq | sort >
"$all_dependencies_txt"
+find "$decompress_conf" -name "*.jar" -exec basename {} \; | sort | uniq >
"$all_dependencies_txt"
-grep -wvf "$self_modules_txt" "$all_dependencies_txt" | uniq | sort >
"$third_party_dependencies_txt"
+grep -wvf "$self_modules_txt" "$all_dependencies_txt" | sort | uniq >
"$third_party_dependencies_txt"
# If the check is success it will return 0
sort "$known_third_party_dependencies_txt" | diff -
"$third_party_dependencies_txt"
diff --git a/tools/dependency-check/known-dependencies.txt
b/tools/dependency-check/known-dependencies.txt
index b30ca5d5e..f6627a693 100644
--- a/tools/dependency-check/known-dependencies.txt
+++ b/tools/dependency-check/known-dependencies.txt
@@ -154,15 +154,11 @@ json-path-2.7.0.jar
json-smart-2.4.7.jar
json-utils-2.20.29.jar
jsr305-3.0.2.jar
-jul-to-slf4j-1.7.33.jar
kafka-clients-3.0.0.jar
listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
log4j-api-2.22.1.jar
log4j-core-2.22.1.jar
-log4j-slf4j-impl-2.22.1.jar
log4j-slf4j2-impl-2.22.1.jar
-logback-classic-1.2.10.jar
-logback-core-1.2.10.jar
lz4-java-1.7.1.jar
lz4-java-1.8.0.jar
metrics-annotation-4.1.0.jar
@@ -325,7 +321,6 @@ spring-beans-5.3.20.jar
spring-boot-2.5.9.jar
spring-boot-autoconfigure-2.5.9.jar
spring-boot-starter-2.5.9.jar
-spring-boot-starter-logging-2.5.9.jar
spring-boot-starter-validation-2.5.9.jar
spring-context-5.3.15.jar
spring-core-5.3.20.jar
diff --git a/tools/third-party-licenses/licenses/java/LICENSE-logback-core.txt
b/tools/third-party-licenses/licenses/java/LICENSE-logback-core.txt
deleted file mode 100644
index 8953762a3..000000000
--- a/tools/third-party-licenses/licenses/java/LICENSE-logback-core.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Logback LICENSE
----------------
-
-Logback: the reliable, generic, fast and flexible logging framework.
-Copyright (C) 1999-2015, QOS.ch. All rights reserved.
-
-This program and the accompanying materials are dual-licensed under
-either the terms of the Eclipse Public License v1.0 as published by
-the Eclipse Foundation
-
- or (per the licensee's choosing)
-
-under the terms of the GNU Lesser General Public License version 2.1
-as published by the Free Software Foundation.
\ No newline at end of file
diff --git a/tools/third-party-licenses/licenses/java/LICENSE-slf4j-simple.txt
b/tools/third-party-licenses/licenses/java/LICENSE-slf4j-simple.txt
deleted file mode 100644
index 744377c43..000000000
--- a/tools/third-party-licenses/licenses/java/LICENSE-slf4j-simple.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 2004-2017 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]