Java 如何从着色的maven jar中排除测试依赖项?
我使用的是maven shade插件,我不仅要排除我的测试代码,还要排除着色jar中的测试依赖项。我意识到我可以明确地排除某些工件(比如junit),但这是一项很好的工作,而且很可能会出现一些错误Java 如何从着色的maven jar中排除测试依赖项?,java,maven,jar,maven-3,maven-shade-plugin,Java,Maven,Jar,Maven 3,Maven Shade Plugin,我使用的是maven shade插件,我不仅要排除我的测试代码,还要排除着色jar中的测试依赖项。我意识到我可以明确地排除某些工件(比如junit),但这是一项很好的工作,而且很可能会出现一些错误 我正在将minimizeJar设置为true,但我仍然看到我的Junit和Mockito依赖项显示出来。难道没有办法通过配置排除所有测试范围的依赖项吗 确保您的测试依赖项位于测试范围内: <dependencies> <dependency> <g
我正在将
minimizeJar
设置为true,但我仍然看到我的Junit和Mockito依赖项显示出来。难道没有办法通过配置排除所有测试范围的依赖项吗 确保您的测试依赖项位于测试
范围内:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
...
您正在使用哪个版本的shade插件?你的pom看起来怎么样?我创建了一个测试项目,使用Junit作为测试范围,而shade插件没有打包它。有可能是另一个不在测试范围内的库将Junit作为依赖项?@mszalbach这是两件事的组合:一,有一个测试依赖项被错误地声明为compile。第二,有一个测试依赖项,它在jar中包含了.java文件,当我查看着色的jar时,我没有注意到扩展名。所以,您是对的,测试依赖项.class文件没有打包。@ryzmek这是两件事的组合:一,有一个测试依赖项被错误地声明为compile。第二,有一个测试依赖项,它在jar中包含了.java文件,当我查看着色jar时,我没有注意到扩展名。我想可能是这样的。这就是为什么我建议
dependency:tree
。这是一个非常有用的工具
mvn dependency:tree