Maven:在项目B中使用项目A的特定测试类
我有项目A和B,其中B需要A。在项目A中,我有一个实用程序类UC,它应该只能用于JUnit测试,因此驻留在项目A的Maven:在项目B中使用项目A的特定测试类,maven,junit,dependencies,project-structure,Maven,Junit,Dependencies,Project Structure,我有项目A和B,其中B需要A。在项目A中,我有一个实用程序类UC,它应该只能用于JUnit测试,因此驻留在项目A的src/test/java中。只要我在A中编写测试,我就可以访问UC。然而,如果我运行Maven并希望它在B中执行测试,我会得到编译器错误,因为UC在B中不可访问 显然,Eclipse在编译某些东西时(即,当我在B中编写测试时,它知道UC),包括了所有源文件夹中的所有类,而Maven在A的最终版本中删除了所有测试类 我的问题是:当我用Maven运行UC的测试时,我需要做什么才能在B中
src/test/java
中。只要我在A中编写测试,我就可以访问UC。然而,如果我运行Maven并希望它在B中执行测试,我会得到编译器错误,因为UC在B中不可访问
显然,Eclipse在编译某些东西时(即,当我在B中编写测试时,它知道UC),包括了所有源文件夹中的所有类,而Maven在A的最终版本中删除了所有测试类
我的问题是:当我用Maven运行UC的测试时,我需要做什么才能在B中访问UC
请理解我是Maven的新手,我想也有人问过类似的问题。但是,我无法将写在那里的内容转换为我的问题并修复它
我希望能清楚地知道我想做什么……在仔细研究之后,我终于找到了一个解决方案: 一, 我在其他问题上偶尔也会看到这种模式,所以我想我只是不太明白。。。哦,好吧*眼卷*
1原始链接停止工作。我(不介意这种笨拙的布局) maven jar插件页面——提到了两种方法。简单的方法是创建一个测试jar工件,然后引用它。(公开抄袭自官方网页的片段)
...
...
org.apache.maven.plugins
maven jar插件
2.4
试验罐
...
...
然后在需要它的项目中使用测试jar类型和测试范围来参考它:
<project>
...
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<type>test-jar</type>
<version>version</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
...
groupId
人工的
试验罐
版本
测试
...
如果你需要做很多事情,你应该考虑把测试代码移到单独的项目。
我总是发现测试罐很笨拙。它们有点奇怪,因为它们只会在新部署到存储库时使用。否则,其他项目看不到更改。这就是为什么我建议只创建普通项目,您可以使用这些项目将测试助手放入其中,然后使用测试范围依赖项引用它们。谢谢您留下我的答案并添加您自己的答案;)@sjngm当我发现您的回答中给出的说明与Maven的官方文档不同时,我回过头来。分类与类型不同。感谢您提供有用的工作示例。另外,请注意还有一个开放的bug:跳过测试时不会生成测试jar!这让我有几分钟的时间感到恶心;)@boly38对于任何数量不多的测试类,您都应该放弃生成测试jar,因为它变得非常笨拙。<project>
...
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<type>test-jar</type>
<version>version</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>