Hi to all,

currently I'm trying to build a simple spring boot application which
uses a BOM for spring-boot-dependencies..

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>3.3.3</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>

So based on the releases of JUnit Jupiter, Mockito etc.
I define the BOM's of JUnit Jupiter and Mockito (and others; only
excerpts shown here) before the spring boot dependencies like this,
because I want to use newer versions, than spring-boot-dependencies defines.


  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.12.1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-bom</artifactId>
        <version>5.16.1</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
      ..
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
      ..
    </dependencies>
  </dependencyManagement>


If I build the project Maven 4.0.0-rc3 I got a bunch of warnings like this:
mvn clean -e
[INFO] Error stacktraces are turned on.
[INFO]
.....
[INFO] Scanning for projects...
[WARNING]
[WARNING] 26 problems were encountered while building the effective
model for 'com.soebes.spring.example:employee:jar:0.0.1-SNAPSHOT' (use
-e to see details)
[WARNING] Ignored POM import for:
org.assertj:assertj-core:jar:3.25.3@compile as already imported
org.assertj:assertj-core:jar:3.27.3@compile. Add the conflicting managed
dependency directly to the dependencyManagement section of the POM.
[WARNING] Ignored POM import for:
org.assertj:assertj-guava:jar:3.25.3@compile as already imported
org.assertj:assertj-guava:jar:3.27.3@compile. Add the conflicting
managed dependency directly to the dependencyManagement section of the POM.
[WARNING] Ignored POM import for:
org.junit.jupiter:junit-jupiter:jar:5.10.3@compile as already imported
org.junit.jupiter:junit-jupiter:jar:5.12.1@compile. Add the conflicting
managed dependency directly to the dependencyManagement section of the
POM....

In Maven 3.9.9 I can build that project without any warning, because the
junit-bom is defined before the spring-boot-dependencies (which has
junit-bom on it's own in an older version), but overwrites the defined
in the spring-boot-dependencies with the newer versions, which is
exactly what I want..

Back to Maven 4:
So does that mean I have to add all the deps which are coming from the
junit-bom (also for the deps from assertj-bom, mockito-bom etc.)
manually into my dependencyManagement, as suggested?

That will wipe away any advantage that using BOMs gives me.

Is there a better solution which I'm not yet aware of?

Kind regards
Karl Heinz Marbaise

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to