我正在努力将我的测试类包含到 jar 包中,但不运行它们。经过一番谷歌搜索后,我尝试过mvn package -DskipTests
,但我的测试类根本没有添加到 jar 中。
有任何想法吗?
如果您遵循 Maven 约定,那么您的测试类位于src/test/java
。
maven 永远不会将测试源子目录的内容打包到工件中。
你有(至少......)3种选择:
使用“正常”源进行测试
if you REALLY想要将它们打包(为什么?)那么你应该将测试类放在src/main/java
它们将被视为普通源,并将其编译的类打包到工件中(通常为 *.jar)
这样做你可能会遇到各种各样的问题。例如,您的工件将具有对 junit 的编译范围依赖,这可能会干扰使用您的 jar 的其他模块。
另外,如果您这样做(也就是说,如果您确实想要将测试作为构建的一部分来运行),您可能必须配置运行测试的 Maven 插件才能了解您的测试类。例如surefire 和failsafe 插件。
配置maven jar插件来构建测试jar
see the maven jar 插件文档 http://maven.apache.org/plugins/maven-jar-plugin/usage.html。他们甚至有一个标题为“如何创建包含测试类的 jar”的部分 - 那里的说明将使您的测试打包到一个单独的 jar 文件中(这可能是一个更好的主意)。
直接使用程序集插件创建 jar
你可以禁用 jar 插件的默认执行 https://stackoverflow.com/questions/4101750/disable-the-execution-default-jar而是添加一个执行组装插件 http://maven.apache.org/plugins/maven-assembly-plugin/到打包阶段创建一个jar。你需要写一个汇编描述符 http://maven.apache.org/plugins/maven-assembly-plugin/advanced-descriptor-topics.html为此(并不像上面的链接所说的那么复杂)。这将使您完全控制所生成的罐子中包含的内容。最好从复制其中之一开始预定义程序集 http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)