use*_*947 81 maven-2 maven-plugin
我使用maven来构建一个多模块项目.我的模块2依赖于编译范围的模块1 src和测试范围中的模块1测试.
第2单元 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这很好用.假设我的模块3依赖于Module1 src并在编译时进行测试.
第3单元 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我运行时mvn clean install
,我的构建运行到模块3,在模块3处失败,因为它无法解析模块1测试依赖性.然后我mvn install
单独对模块3进行操作,返回并mvn install
在我的父pom上运行以使其构建.我怎样才能解决这个问题?
Pas*_*ent 117
我怀疑你要做什么,但我会假设你想重用你为另一个项目(module1)创建的测试.正如使用附加测试指南底部的说明中所解释的那样:
请注意,本指南的先前版本建议使用
<classifier>tests</classifier>
而不是<type>test-jar</type>
.虽然目前适用于某些情况,但在调试JAR模块的反应器构建期间,如果调用安装之前的生命周期阶段,则它在任何使用者中都无法正常工作.在这种情况下,Maven不会从reactor构建的输出解析测试JAR,而是从本地/远程存储库解析测试JAR.显然,来自存储库的JAR可能已过时或完全丢失,导致构建失败(参见MNG-2045).
因此,首先,要将已编译的测试打包在JAR中并将其部署以进行一般性重用,请maven-jar-plugin
按如下方式进行配置:
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
然后,照常安装/部署测试JAR工件(使用mvn install
或mvn deploy
).
最后,要使用测试JAR,您应该指定具有指定类型的依赖项test-jar
:
<project>
...
<dependencies>
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
Run Code Online (Sandbox Code Playgroud)
Rom*_*man 17
关于我对Pascals问题的评论,我想我找到了一个合适的答案:
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<phase>test-compile</phase>
</execution>
</executions>
<configuration>
<outputDirectory>${basedir}\target</outputDirectory>
</configuration>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
这里看到的主要区别是<phase>
标签.
我将创建测试jar,它将在测试的编译阶段提供,而不仅仅是在封装阶段之后.
适合我.
归档时间: |
|
查看次数: |
46893 次 |
最近记录: |