Maven 弹簧启动机测试1.4.1-使用assertj core 3.5.x

Maven 弹簧启动机测试1.4.1-使用assertj core 3.5.x,maven,spring-boot,Maven,Spring Boot,我想使用最新的assertj core for Java8(例如在optionals上断言)。 我使用spring boot starter test 1.4.1,它附带assertj 2.5.0预配置 我不能使用spring boot父pom 我如何设置maven项目,以排除或覆盖版本2.5.0和版本3.5.2?我试过了 仅设置属性assertj.version 在启动机测试依赖项上添加排除项 在spring引导依赖项上添加排除 更新: 我正在为我的多模块项目中的所有模块设置自定义“测试”

我想使用最新的assertj core for Java8(例如在optionals上断言)。 我使用spring boot starter test 1.4.1,它附带assertj 2.5.0预配置

我不能使用spring boot父pom

我如何设置maven项目,以排除或覆盖版本2.5.0和版本3.5.2?我试过了

  • 仅设置属性
    assertj.version
  • 在启动机测试依赖项上添加排除项
  • spring引导依赖项上添加排除
更新:

我正在为我的多模块项目中的所有模块设置自定义“测试”模块。我不仅需要SpringTestStarter,还需要一些其他依赖项和一些测试类和规则

这就是我的项目的样子:

my-module-root
 |-my-module-a (using test)
 |-my-module-b (using test)
 \-test (including starter-test, ... - in COMPILE scope (because this is a test library))
现在,当我排除测试模块上的assertj core(并包括3.5.2)时,测试模块的依赖关系就正常了。
但是,当我检查根级别的依赖关系时,我在类路径上同时有assertj-core-2.5.0和assertj-core-3.5.2。

您可以将其从
spring boot starter测试中排除,然后手动添加不同的版本:

<dependencies>
    ...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.5.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

谢谢你的更新。这就是我第二点的意思。我已经试过了。忘了在问题中提及一些东西模块A和B是否将模块测试包括在“测试”范围内?。您确定除了“测试”模块之外,您不包括任何spring boot starter测试吗?是和是。仔细检查。我将在github上创建一个小示例来验证。。。
$ mvn dependency:tree | grep assertj
[INFO] \- org.assertj:assertj-core:jar:3.5.2:test