我有一个maven构建过程,可以将可执行jar及其测试发布到Nexus。 我有另一个maven构建过程需要访问这些jar(可执行文件+测试)并运行测试。
我该如何解决?到目前为止,只有当jar被分解为类文件时,我才设法做到这一点。 我是maven的新手,完全迷失在文档中。
答案 0 :(得分:9)
Surefire和failsafe目前不支持在jar中运行测试。
这主要是因为无法识别测试。
有两种方法可以让测试运行。
使用测试套件列出test-jar中的所有测试。因为测试套件将在src / test / java中(更正确地将编译成目标/测试类)将被拾取并且套件中的所有测试将由Surefire / failsafe运行(假设套件类名称)匹配包含规则:以测试开始或结束)
使用maven依赖插件的unpack-dependencies目标将test-jar解压缩到target / test-classes(这种hack的尖叫,但效果很好)
第一个选项的主要问题是你不能轻易地从套件中运行一个测试,你需要从test-jar命名每个测试
出于这个原因,我倾向于支持选项2 ...还有一个额外的好处,即选项2并不意味着编写代码来解决构建工具插件中的限制...你将自己锁定到特定构建的次数越少工具,更好的恕我直言
答案 1 :(得分:4)
这对于较新的surefire和故障安全插件实际上工作得很好,请参阅相关问题:
因此您不再需要解压缩jar,只需提供要扫描的依赖项的组和工件ID(这适用于“主jar”依赖项,以及“test-jar”依赖项)< / p>
答案 2 :(得分:0)
附加的test-jar可以在其他项目中用作通常的依赖项,它支持在测试区域中重用代码,但是你不能在jar中运行测试。如果你真的需要解决方案,你必须至少写一个套件(等等?)从jar开始测试。