java - 在java中重新打包依赖项

标签 java eclipse ivy dependency-management

我经常遇到的问题是,我在我的项目中使用了实际的库。现在,如果我在旧项目中使用这个 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/

相关文章:

java - Kafka 如何存储每个主题的偏移量?

java - 语法错误 : Encountered ";"

java - 在 Eclipse 中读取项目中的 .txt 文件

ant - 使用 Ivy 下载/安装 ant-contrib、bsf、beanshell、commons-logging

build - Ivy 模块的多个工件

java - 链表插入节点后

java - 如何使用 Java 获取正在运行的进程列表

eclipse - 更改 Google App Engine 的地址端口 - Eclipse

java - 通过hibernate插入2.对象后出现Hsql错误

java - IVY Build,如何在项目中使用extlib目录?