15

私はshademavenプラグインを使用してプロジェクトをビルドし、そのすべての依存関係が1つのjarに含まれるようにします(これにより、Hadoopでの実行が容易になります)。Shadeはデフォルトで私のテストコードを除外しているようですが、これは理解できます。クラスターに対して統合テストを実行したいので、この目的のために別のjarを構築するために別のプロファイルをセットアップしたいと考えています。テストコードも含めるようにこのプラグインを構成する方法はありますか?

4

5 に答える 5

8

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 にテスト クラスを含める方法は?

于 2014-08-15T18:13:27.330 に答える
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>
于 2015-03-24T22:10:08.050 に答える
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>
于 2011-03-01T03:13:03.257 に答える
1

上記の ~steve-k で説明されているように使用することmaven-shade-pluginは正しいですが、残念ながらバグが原因でshadeTestJar機能せず、結果のテスト JAR は空です。

于 2018-04-02T19:26:25.243 に答える