与 Maven 共享 src/test 类,无需 test-jar 的版本规范

Joh*_*nny 4 java maven-3 maven

我在多个模块之间共享 src/测试类,其方式与附加测试指南以下问题中描述的方式类似。

所以,我有以下 pom.xml 依赖项:

       <dependency>
            <groupId>com.myco.app</groupId>
            <artifactId>foo</artifactId>
        </dependency>

        <dependency>
            <groupId>com.myco.app</groupId>
            <artifactId>foo</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

但是,与上面的问题相反,在附加测试 jar 时,我不想指定特定的测试 jar 版本。如编译级别依赖项所示:

   <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的 pom.xml 会出现错误,并显示有关缺少版本的消息。为什么会出现这种情况呢?为什么我可以指定没有版本的依赖项,但不能指定 test-jar 依赖项?有没有办法克服这个问题并使测试 jar 使用它能找到的最新 jar?

Joh*_*nny 5

主代码依赖项可以在没有版本的情况下使用的原因是我们的项目中存在一个“主 pom”,它会自动为节中的每个依赖项生成适当的版本。因此,可以指定每个依赖项而无需特定版本号。

另一方面,Test-jar 依赖项没有在传递依赖项中的其他任何地方定义其版本,因此必须指定特定版本。