Maven传递依赖混淆

时间:2012-06-26 23:47:04

标签: maven maven-2 transitive-dependency

如果我在一个应用程序(例如my.company.app)中包含一个库(例如mycompany.model.core-SNAPSHOT),并且mycompany.model.core包含Hibernate作为依赖项,我可以在其中引用Hibernate类和函数my.company.app WITHOUT在应用程序中包含hibernate(显式)?

谢谢!

1 个答案:

答案 0 :(得分:3)

你可以,但这不是好习惯。

如果您需要在类路径上使用类或接口来编译应用程序,则应为其添加<dependency>。这可以保护您免受上游依赖项的更改(例如,如果您依赖的库切换到TopLink而不是Hibernate),并允许Maven注意您的直接和间接依赖项的版本号是否不同步。

既然你控制了库和应用程序工件,为什么不让它们都从公共父pom.xml继承呢?然后,您可以从一个位置管理依赖项的版本(例如,您的Hibernate版本)。