我经常遇到的问题是我在项目中使用了实际的库。现在,如果我在旧项目中使用此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&常春藤& Eclipse Luna
答案 0 :(得分:3)
Jar Jar链接https://code.google.com/p/jarjar/可用于此目的。它提供了可以用来代替标准jar任务的ant任务,并且有规则元素来定义重命名模式。
另一个选项可能是Maven Shade插件,它可以执行相同的http://maven.apache.org/plugins/maven-shade-plugin/