我经常遇到的问题是,我在我的项目中使用了实际的库。现在,如果我在旧项目中使用这个 jar,我就会依赖项之间发生冲突
。最好的例子是 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
最佳答案
Jar Jar 链接 https://code.google.com/p/jarjar/可以用于此。它提供了可以用来代替标准jar任务的ant任务,并且有规则元素来定义重命名模式。
另一个选项可能是 Maven Shade 插件,它可以做同样的事情 http://maven.apache.org/plugins/maven-shade-plugin/
关于java - 在java中重新打包依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28601608/