如何使用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 在顶层,所有测试都将运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |