如何配置maven shade插件以在我的jar中包含测试代码?

Pat*_*iak 13 java hadoop maven maven-shade-plugin

我使用shade maven插件来构建我的项目,以便它的所有依赖项都包含在一个jar中(这使得在Hadoop上运行它更容易).默认情况下,Shade似乎排除了我的测试代码,这是可以理解的.由于我想对我的集群运行集成测试,我希望设置另一个配置文件来为此目的构建一个单独的jar.有没有办法配置这个插件还包括测试代码?

Ste*_*e K 7

使用版本2.2的maven-shade-plugin,他们添加了一个"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>
Run Code Online (Sandbox Code Playgroud)

"...- tests.jar"文件没有条目,但主阴影jar看起来很好(尽管它不包含任何测试类).

此外,这个问题重复了另一个问题,虽然接受的答案并不真正令人满意:如何在maven-shade-plugin创建的Jar中包含测试类?


小智 5

我设法通过添加以下内容使其工作:

<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>
Run Code Online (Sandbox Code Playgroud)


use*_*288 5

这些最后几个答案充其量是杂乱的解决方法,最多只能解决一个已损坏的功能。问题的事实仍然是maven-shade-plugin。同时,我调查了该错误并引起了该错误,并创建了一个补丁。现在,我希望Apache的某人很快将其包括在内,然后最终该shadeTestJar功能可以按预期运行。


Yur*_*sov 1

尝试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>
Run Code Online (Sandbox Code Playgroud)