如何使用test-jar依赖项运行maven编译阶段
|
我正在研究的项目由多个模块组成,使用maven构建.
在依赖模块中: <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>
在依赖于前一个模块的模块中: <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>themodulename</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
使用此配置,可以成功执行maven安装阶段. 查看测试jar目标,它似乎被配置为在程序包阶段默认运行,我认为这是导致问题的原因. 然后,我尝试在编译阶段强制执行此目标,方法是将第一个配置修改为: <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
查看调试日志,我可以看到目标现在在编译阶段执行,但是: [WARNING] JAR will be empty - no content was marked for inclusion! 我尝试将包含配置为** / *并确认默认的testClassesDirectory设置为正确的,但我仍然得到相同的警告. 我可以看到在运行编译阶段后test-classes文件夹不存在,这似乎正常,但即使它在运行测试阶段后存在,并且它包含文件,我仍然会得到“JAR将为空”警告. 有没有人有任何想法修复此配置,以便我可以成功运行编译或测试阶段? 我坚信测试应该只是一个模块的一部分.您不应该依赖其他模块中的测试.如果更新测试以使其行为不同,则很难预测会发生什么.如果您需要共享通用测试数据或通用测试类,那么最好使用该共享测试源创建单独的模块.然后让所有测试都依赖于带有范围测试的共享测试jar. +-- MyProject +-- common-test-util | +-- src | | +-- main | | +-- java | +-- pom.xml +-- moduleA | +-- src | | +-- main | | | +-- java | | +-- test | | +-- java | +-- pom.xml +-- moduleB | +-- src | | +-- main | | | +-- java | | +-- test | | +-- java | +-- pom.xml +-- pom.xml 确保您只依赖于带有< scope> test< / scope>的common-test-util.然后你就可以打电话了 mvn test 在顶层,所有测试都将运行. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
