我使用maven来构建一个多模块项目 . 我的模块2依赖于编译范围的模块1 src和测试范围中的模块1测试 .
第2单元 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
这很好用 . 假设我的模块3依赖于Module1 src并在编译时进行测试 .
第3单元 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
当我运行 mvn clean install
时,我的构建运行到模块3,在模块3处失败,因为它无法解析模块1的测试依赖性 . 然后我单独在模块3上执行 mvn install
,返回并在我的父pom上运行 mvn install
以使其构建 . 我怎样才能解决这个问题?
3 回答
我怀疑你要做什么,但我会假设你想重用你为另一个项目(module1)创建的测试 . 如Guide to using attached tests底部的说明中所述:
因此,首先,要在JAR中打包已编译的测试并将其部署以进行常规重用,请按如下方式配置
maven-jar-plugin
:然后,照常安装/部署测试JAR工件(使用
mvn install
或mvn deploy
) .最后,要使用测试JAR,您应该指定具有指定类型
test-jar
的依赖项:关于我对Pascals问题的评论,我想我找到了一个合适的答案:
这里看到的主要区别是
<phase>
标签 .我将创建测试jar,它将在测试的编译阶段提供,而不仅仅是在封装阶段之后 .
适合我 .
正如https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html所说:
请阅读该文章了解详情 .