【问题标题】:How to exclude test dependencies from a shaded maven jar?如何从阴影 maven jar 中排除测试依赖项?
【发布时间】:2013-05-04 04:58:27
【问题描述】:

我正在使用 maven-shade-plugin,我不仅想排除我的测试代码,还想排除我在阴影 jar 中的测试依赖项。我意识到我可以专门排除某些工件(如 junit),但这是一项很好的工作,而且很可能会出现一些错误。

我将 minimizeJar 设置为 true,但我仍然看到我的 Junit 和 Mockito 依赖项出现。有没有办法通过配置排除所有测试范围的依赖项?

【问题讨论】:

  • 您使用的是哪个版本的阴影插件?你的 pom 看起来怎么样?我创建了一个以 Junit 作为测试范围的测试项目,并且 shade 插件没有打包它。有可能不在测试范围内的另一个库将 Junit 作为依赖项?
  • @mszalbach 这是两件事的结合:第一,有一个测试依赖被错误地声明为编译。第二,有一个测试依赖项,在其 jar 中包含 .java 文件,当我查看阴影 jar 时,我没有注意到扩展名。所以,你是对的,测试依赖 .class 文件没有被打包。

标签: java maven jar maven-3 maven-shade-plugin


【解决方案1】:

确保您的测试依赖项在 test 范围内:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
...

检查你的依赖设置是否使用

mvn dependency:tree

【讨论】:

  • @ryzmek 这是两件事的结合:第一,有一个测试依赖被错误地声明为编译。二,有一个测试依赖,在它的 jar 中包含了 .java 文件,我在看阴影的 jar 时并没有注意到扩展名。
  • 我认为可能是这样。这就是为什么我建议dependency:tree。这是一个非常有用的工具
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2015-05-31
  • 2015-09-23
  • 2020-04-19
相关资源
最近更新 更多