将 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 中并将其安装到本地存储库中。这可行。但我仍然对更专业的解决方案感兴趣)