我使用 Shade Maven插件构建我的项目,以便将所有依赖项包含在一个jar文件中(这使得在Hadoop上运行它更加容易)。Shade似乎默认情况下排除我的测试代码,这是可以理解的。由于我希望针对我的集群运行集成测试,因此我希望设置另一个配置文件来构建一个单独的jar文件用于此目的。是否有办法配置此插件以包括测试代码?
我使用 Shade Maven插件构建我的项目,以便将所有依赖项包含在一个jar文件中(这使得在Hadoop上运行它更加容易)。Shade似乎默认情况下排除我的测试代码,这是可以理解的。由于我希望针对我的集群运行集成测试,因此我希望设置另一个配置文件来构建一个单独的jar文件用于此目的。是否有办法配置此插件以包括测试代码?
maven-shade-plugin
中存在漏洞。同时,我已经调查并找到了漏洞,并创建了一个补丁。现在我希望Apache的某个人很快就会包含它,然后最终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>
我通过添加以下内容使其正常工作:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.basedir}/src/test/java/</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
include
您的测试包:<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>org.apache.maven:*</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
maven-shade-plugin
是正确的,但由于一个错误,shadeTestJar
无法正常工作,导致生成的测试JAR文件为空。
maven-jar-plugin
test-jar
package
test-jar
使用 "tests" 分类器依赖于该测试 jar 包:
com.abc
blah
1.0
tests
test
- Patrick Marchwiak