我的一个项目需要对生成的JAR文件进行非常复杂的设置,所以我想在package
阶段之后运行一个测试,以确保JAR包含它应该包含的内容。
我如何使用Maven 2?
答案 0 :(得分:5)
您可以使用surefire-plugin。你需要做的是将阶段与执行相关联(见下文)。在包装阶段之后,您需要将阶段更改为您想要的阶段。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>unittests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/**/**/*Test.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:3)
将您的项目转换为multi-module build。在第一个模块中,构建原始项目。在第二个模块中,向第一个模块添加依赖项。
这会将第一个JAR添加到类路径中。
OP更新:这有效,但我必须将其添加到我的POM中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.maven-surefire-plugin}</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
重要的部分是<useSystemClassLoader>false</useSystemClassLoader>
。如果没有这个,我的类路径只包含几个VM JAR和surefire引导程序JAR(它包含MANIFEST.MF
中的测试类路径)。我不知道为什么从它加载的类中看不到这个测试类路径。