On Mon, 12 Sept 2022 at 09:11, Piotr P. Karwasz <piotr.karw...@gmail.com> wrote:
> It would be also nice to synchronise the `pom.xml` of `release-2.x`
> and `master`. Since the main `pom.xml` has about a hundred
> dependencies, what do you think about normalizing them by:
>
>  * using BOMs if available (e.g. Jackson),
>  * removing the scope from `<dependencyManagement>`: this way there
> will be no difference between BOMs and explicit dependencies. It's
> more verbose, but we won't risk having JUnit in the compile scope.
>  * removing exclusions from `<dependencyManagement>`: AFAIK they are
> ignored by Maven. Or we can keep the exclusions as a template for the
> projects.
>  * adding a property in the main pom.xml for *each* dependency used
> (e.g. even `slf4j-api:2.0.0` used in a single module). A convention on
> how to name these properties would be nice too...
>  * sorting dependencies by scope (provided > compile > runtime >
> test), artifactId and groupId.

I finished moving things around. All the dependencies of the published
artifacts are in the `log4j` POM and versions are specified through
properties, so that they can be overridden in single modules. Of
course `log4j-bom` and `log4j-distribution` need to deal with their
dependencies independently (unless we add artifacts with `sources` and
`javadoc` classifiers to `log4j-bom`).

Two XSLT's in `src/tools` allow to sort the POMs and list all the
plugin and dependency versions that are explicitly provided. Excluding
the aforementioned `log4j`, `log4j-bom` and `log4j-distribution`,
these are the results of running `src/tools/explicit-version.xslt` on
all POMs (the comments are mine):

Artifact:log4j-cassandra
Version related properties:
    guava.version = 25.1-jre // still vulnerable to CVE-2020-8908, but
Cassandra does not work with newer versions

Artifact:log4j-jpl
Version related properties:
    surefire.version = 2.13 // to use 3.x we need to run Maven on JDK 9+

Artifact:log4j-jul
Dependencies for plugin maven-surefire-plugin:
    org.apache.maven.surefire:surefire-junit47:${surefire.version} //
`surefire-platform` initializes JUL before our tests can do it

Artifact:log4j-mongodb3
Version related properties:
    mongodb.version = 3.12.11 // override of the default 4.5

Artifact:log4j-osgi
Project dependencies:
    
org.apache.logging.log4j.samples:log4j-samples-configuration:${project.version}

Artifact:log4j-perf
Dependencies for plugin maven-shade-plugin:
    
com.github.edwgiz:maven-shade-plugin.log4j2-cachefile-transformer:${log4j2-cachefile-transformer.version}

Artifact:log4j-samples
Version related properties:
    maven-jetty-plugin.version = 6.1.26
    spring-ws.version = 3.1.3
Dependency management:
    
org.apache.logging.log4j.samples:log4j-samples-flume-common:${project.version}
    org.springframework.ws:spring-ws-core:${spring-ws.version}
Plugin management:
    org.mortbay.jetty:maven-jetty-plugin:${maven-jetty-plugin.version}

Artifact:log4j-slf4j-impl
Version related properties:
    slf4j.version = 1.7.25 // 1.7.26 has breaking changes

Artifact:log4j-spring-cloud-config-samples
Version related properties:
    spring-ws.version = 3.1.3
Dependency management:
    org.springframework.ws:spring-ws-core:${spring-ws.version}
Plugin management:
    org.springframework.boot:spring-boot-maven-plugin:${spring-boot.version}

Artifact:log4j-spring-cloud-config
Version related properties:
    spring-cloud.version = 2021.0.4
Dependency management:
    org.apache.logging.log4j:log4j-bom:${project.version}:pom
    org.springframework.boot:spring-boot-dependencies:${spring-boot.version}:pom
    
org.springframework.cloud:spring-cloud-dependencies:${spring-cloud.version}:pom

Artifact:log4j-slf4j2-impl
Version related properties:
    slf4j.version = 2.0.0

Piotr

Reply via email to