如何配置 maven 阴影插件以在我的 jar 中包含测试代码?
2022-09-03 13:24:46
我使用share maven插件来构建我的项目,以便它的所有依赖项都包含在一个jar中(这使得在Hadoop上运行它变得更加容易)。默认情况下,Shade似乎排除了我的测试代码,这是可以理解的。由于我想对我的集群运行集成测试,我希望设置另一个配置文件来为此构建一个单独的jar。有没有办法配置这个插件来包括测试代码?
我使用share maven插件来构建我的项目,以便它的所有依赖项都包含在一个jar中(这使得在Hadoop上运行它变得更加容易)。默认情况下,Shade似乎排除了我的测试代码,这是可以理解的。由于我想对我的集群运行集成测试,我希望设置另一个配置文件来为此构建一个单独的jar。有没有办法配置这个插件来包括测试代码?
在 maven-shade-plugin 的 2.2 版本中,他们添加了一个“shadeTestJar”选项(参见 MSHADE-158):http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeTestJar
但是,我尝试使用它,但无法使其正常工作。这是我的插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadeTestJar>true</shadeTestJar>
</configuration>
</execution>
</executions>
</plugin>
“...-tests.jar”文件没有条目,但主阴影 jar 看起来很好(尽管它不包含任何测试类)。
此外,这个问题重复了另一个问题,尽管接受的答案并不真正令人满意:如何在maven-shade-plugin创建的Jar中包含测试类?
最后几个答案充其量只是一个损坏的功能的混乱解决方法。事实仍然是 中存在一个错误。与此同时,我已经调查并根治了这个错误,并创建了一个补丁。现在我希望Apache的某个人尽快包含它,然后最终该功能可以像它应该的那样工作。maven-shade-plugin
shadeTestJar