2011-12-22 176 views
2

我有一个项目有两个版本的相同的jar(他们实现类似的类和其他特定的类)。一个jar用于一个文件夹中的java源文件,另一个用于其他文件夹。Maven:冲突罐依赖项

的问题是,它会导致一个罐子冲突(不同类的实现),因为它似乎是两个文件夹使用的依赖列表中找到的第一个罐子,如:

Jar_file ... 1.0 0.0

Jar_file ... 2.0.0

然后,我的问题是我怎么能到其中的关联是否对同一项目中的每个文件夹有特定的依赖关系?

干杯。

+0

版本2.0是否不包含向后兼容版本1.0? – Davos555 2011-12-22 11:08:14

+0

为什么不能在项目的所有地方使用2.0版本? – 2011-12-22 11:36:48

+0

嗨,没有向后兼容性:(真的,它们是相同标准的不同实现,而不是不同的版本。 – Soni 2011-12-22 11:53:49

回答

5

您应该将两个“文件夹”重构为两个不同的Maven模块。现在每个人都可以声明它需要的库的版本。然后使用maven-shade-plugin将库调整为两个模块的结果JAR文件。另外使用maven-shade-plugin的class relocation功能将库的类重定位到新包。为这两个版本的库选择不同的软件包名称。您将最终将库的两个版本放入两个不同的包中,并将其隐藏到生成的JAR文件中。