Java 与Maven共享src/test类,而不需要测试jar的版本规范
我在多个模块之间共享src/test类,方法与和中描述的类似 因此,我有以下pom.xml依赖项:Java 与Maven共享src/test类,而不需要测试jar的版本规范,java,maven,maven-3,Java,Maven,Maven 3,我在多个模块之间共享src/test类,方法与和中描述的类似 因此,我有以下pom.xml依赖项: <dependency> <groupId>com.myco.app</groupId> <artifactId>foo</artifactId> </dependency> <dependency>
<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>
com.myco.app
福
com.myco.app
福
1.0.0-SNAPSHOT
试验罐
测试
但是与上述问题相反,在附加测试jar时,我不想指定特定的测试jar版本。与编译级依赖项一样:
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
com.myco.app
福
试验罐
测试
在这种情况下,我的pom.xml会错误地显示有关缺少版本的消息。为什么会这样?为什么我可以在没有版本的情况下指定依赖项,但不能指定测试jar?有没有办法克服这个问题,让测试jar使用它能找到的最新jar?可以在没有版本的情况下使用主代码依赖项的原因是,在我们的项目中存在一个“主pom”,它会自动为第节中的每个依赖项生成适当的版本。因此,可以在不指定特定版本号的情况下指定每个依赖项
另一方面,测试jar依赖项在可传递依赖项的其他任何地方都没有定义它的版本,因此,必须指定特定的版本。看看这个答案是否符合您的需要:这是一个多模块构建吗?@khmarbaise,是的,这是一个多模块构建。@PauloSantos谢谢,这是一个很好的源代码。但我的问题不止于此——我想理解为什么在我的案例中,定义没有版本的依赖关系不起作用(即使这不是推荐的做法)。指定没有版本的依赖关系不起作用,因为maven就是这样设计的。但是它只适用于插件,当你没有指定插件时,maven将使用最新版本。我所知道的唯一允许您使用不带版本的依赖项的情况是,在标记中已经定义了依赖项(带版本)