JMockit を JUnit および Android と一緒に使用すると、Maven コンパイルで問題が発生します。
[情報] 予期しないトップレベルの例外: [情報] java.lang.IllegalArgumentException: 既に追加されています: Ljunit/framework/TestResult$1;
少なくとも JUnit と JMockit には TestResult が含まれているため、shade プラグインを使用してこれらのファイルを除外することを考えました。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>com.googlecode.jmockit:jmockit</artifact>
<excludes>
<exclude>junit/framework/**</exclude>
</excludes>
</filter>
<filter>
<artifact>junit:junit</artifact>
<excludes>
<exclude>junit/framework/**</exclude>
</excludes>
</filter>
</filters>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
残念ながら、私はまだこれらのエラーを受け取ります。ここで何が間違っているのか、またはこのプラグインの内容を誤解していましたか? または、Maven との複数のパッケージの競合を取り除くためのより良い解決策を知っているでしょうか?
アップデート
(その間、競合する依存関係をjarから手動で解凍して削除し、すべてのパッケージをuber jarに再パックしてローカルリポジトリにインストールしました。これは機能しますが、より専門的なソリューションに興味があります)