【问题标题】:Repack dependencies in java在java中重新打包依赖项
【发布时间】:2015-04-20 12:23:29
【问题描述】:

我经常遇到的问题是我在项目中使用了实际的库。现在,如果我在旧项目中使用这个 jar,我有 conflicts between the dependencies。最好的例子是Guava。在一些项目中,我有 12/13 版本,而 Guava 的实际版本是 18,我在较新的项目/库中使用。

最好将所有依赖项打包到 jar 中,例如,如果我使用 Guava 18,它会在此项目的自己的包树中重新打包为自己的类,因此我可以在旧项目中使用较新的 jar与 Guava 13 的项目依赖项没有任何 Guava 版本冲突,因为导入的 jar/lib/dependency 仍然使用重新打包的 Guava 版本 18。

有人知道这样做的好方法吗?有什么框架可以做到这一点吗?希望我已经正确解释了我的问题。

事实(我使用的):Java 1.6-1.8 & Ivy & Eclipse Luna

【问题讨论】:

  • 这是一个常春藤问题吗?如果是,请提供常春藤文件

标签: java eclipse ivy dependency-management


【解决方案1】:

Jar Jar Links https://code.google.com/p/jarjar/ 可用于此。它提供了可以代替标准jar任务使用的ant任务,并且具有定义重命名模式的规则元素。

另一个选项可能是 Maven Shade 插件,它可以做同样的http://maven.apache.org/plugins/maven-shade-plugin/

【讨论】:

  • Maven 阴影插件在集成 maven 构建时效率更高,效果更好。但是我不知道它是否可以与 Ivy 构建一起使用,所以提到 jarjar 也是公平的。
  • 有人有例子如何用 gradle 重新打包依赖吗?
猜你喜欢
  • 2019-08-04
  • 2013-12-09
  • 1970-01-01
  • 2015-12-20
  • 2017-01-13
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多