我正在研究的项目由多个模块组成,使用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文件依赖性.
查看测试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将为空”警告.
有没有人有任何想法修复此配置,以便我可以成功运行编译或测试阶段?
我坚信测试应该只是一个模块的一部分.您不应该依赖其他模块中的测试.如果更新测试以使其行为不同,则很难预测会发生什么.
原文链接:https://www.f2er.com/javaschema/281680.html如果您需要共享通用测试数据或通用测试类,那么最好使用该共享测试源创建单独的模块.然后让所有测试都依赖于带有范围测试的共享测试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
在顶层,所有测试都将运行.