我有一个Maven构建过程,可以将可执行的JAR文件及其测试发布到Nexus。 我还有另一个Maven构建过程需要访问这些JAR文件(可执行文件+测试),并运行测试。
我该怎么做?到目前为止,我只能在JAR文件被拆分成类文件的情况下完成此操作。 我是Maven新手,并且对文档完全感到迷惑。
我有一个Maven构建过程,可以将可执行的JAR文件及其测试发布到Nexus。 我还有另一个Maven构建过程需要访问这些JAR文件(可执行文件+测试),并运行测试。
我该怎么做?到目前为止,我只能在JAR文件被拆分成类文件的情况下完成此操作。 我是Maven新手,并且对文档完全感到迷惑。
更新于2022-03-11
该功能已实现,详见https://dev59.com/6Gkv5IYBdhLWcg3wlRtc#17061755
原始回答
Surefire和failsafe目前不支持从jar包中运行测试。
这主要是由于无法识别测试的情况。
有两种方法可以使测试运行:
使用测试套件列出测试-jar中的所有测试。因为测试套件将位于src/test/java中(更准确地说,会编译进入target/test-classes),所以Surefire/failsafe会自动检测到它,并且将运行测试套件中的所有测试(假设套件类名与includes规则相匹配:以Test开头或结尾)
使用Maven依赖插件的unpack-dependencies目标将测试-jar解压缩到target/test-classes中(这听起来很hack,但效果很好)
第一种选择的主要问题是您不能轻松地仅运行测试套件中的一个测试,并且需要命名测试-jar中的每个测试。
因此,我倾向于选择选项2... 另外一个好处是选项2不意味着编写代码以解决构建工具插件中的限制... 在我看来,您越少将自己锁定在特定的构建工具中,就越好。