首页 > 解决方案 > 无法让 maven-assembly-plugin 打包测试

问题描述

我想生成一个包含我的测试类和测试范围依赖项的胖/独立 jar。使用 maven-jar-plugin,我可以创建一个包含我的测试类但不包含依赖项的 jar。阅读互联网,似乎解决方案是将 maven-jar-plugin 与 maven-assembly-plugin 结合起来。

我尝试按照这些说明https://jitblog.net/build-maven-standalone-tests/但没有成功。这是我的问题的重现:https ://github.com/yanakad/commons-compress-test

  1. mvn clean package
  2. 预期:target/fatJar.jar 将包含 SnakeYaml 和 TestClass
  3. 观察到:SnakeYaml 确实存在,但 TestClass 不存在

我的 Maven 版本是Apache Maven 3.6.0

看一下maven的执行,好像

`[INFO] --- maven-assembly-plugin:3.2.0:single (fat-testjar) @ compress-test ---` 
is run before
`[INFO] --- maven-jar-plugin:3.2.0:test-jar (default) @ compress-test ---`

不确定这是原因还是红鲱鱼,或者如何解决......任何见解都非常感谢

标签: maven-3maven-assembly-pluginmaven-jar-plugin

解决方案


所以它确实是一个愚蠢的错误,但离开这里以防它帮助别人

maven-jar-pluginmaven-assembly-plugin在相同的构建阶段运行。Maven 显然按照文件的词法顺序执行插件。因此,程序集插件在 jar 插件之前运行的事实实际上是问题所在。解决方案是重新排序 pom.xml 文件中的插件,使其maven-jar-plugin出现在之前maven-assembly-plugin


推荐阅读