Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与Maven共享src/test类,而不需要测试jar的版本规范_Java_Maven_Maven 3 - Fatal编程技术网

Java 与Maven共享src/test类,而不需要测试jar的版本规范

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>

我在多个模块之间共享src/test类,方法与和中描述的类似

因此,我有以下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>

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将使用最新版本。我所知道的唯一允许您使用不带版本的依赖项的情况是,在标记中已经定义了依赖项(带版本)