【问题标题】:Creating uber jar with maven使用 maven 创建 uber jar
【发布时间】:2016-12-30 10:12:07
【问题描述】:

我的项目从父级继承了 compile 依赖项,我无法控制它 - 无法将它们更改为 provided。
此外,我在项目的 pom.xml 中添加了另一个依赖项 'a:b:1.0.0'。我只想将 'a:b:1.0.0' 及其自身的依赖项(recursively)包含到我的 uber jar 中。
似乎assembly 和shade 插件都不支持这种情况。 这怎么可能做到? 谢谢

【问题讨论】:

  • 不清楚你在问什么。您想要 1) 更改继承依赖项的范围和 2) 只打包 a:b(groupId 和 artifactId)而不在文件中包含版本名称?
  • "我只想将 'a:b:1.0.0' 及其自身的依赖项(递归地)包含到我的 uber jar 中。"
  • 这不是关于 maven 插件,而是关于 Maven 依赖中介,你可以配置你的 dependencyManagement 来覆盖继承依赖的依赖范围,例如查看 this 帖子
  • 感谢@A_Di-Matteo,但这解决了问题的第一部分,我如何告诉“组装”或“阴影”插件包含“a:b:1.0.0”一起 与它的依赖关系,递归?
  • 您能分享您的pom.xml 文件以及您已经尝试过(但不起作用)的内容吗?

标签: maven maven-assembly-plugin maven-shade-plugin


【解决方案1】:

递归着色有一些明显的缺点。特别是,来自多个依赖项的重复文件仅被一个版本的文件覆盖的问题。这可能会导致一些非常烦人的问题在运行时进行故障排除。你最好使用类似spring boot之类的东西来构建一个独立的jar,而不是将文件着色到单个层次结构中,而是将依赖库作为子目录嵌入到自身中,并为你包含在类路径中。

http://docs.spring.io/spring-boot/docs/current/maven-plugin/repackage-mojo.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2019-04-30
    • 2015-06-19
    相关资源
    最近更新 更多