Łuk*_*man 6 java dependencies maven
我已经阅读了一段时间关于Maven中的显式与传递(隐式)依赖声明.大多数人倾向于同意您应该始终明确声明项目所依赖的库,主要是为了避免版本不匹配.
这是完全合理的,但我们应该如何处理我们的内部依赖?我认为绝对没有理由保持模块之间的显式依赖关系,如果它们可以通过传递机制解决.
我的用例场景:
major.minor.micro
发布周期中开发软件,例如:1.1.1,1.1.2,1.3.0等......我的直觉告诉我 - 摆脱依赖意大利面条.谁会证明我错了?Reactor(依赖)图表非常受欢迎:-)
我的父项目使用以下模块(省略外部依赖项):
Project:1.1
- core:1.1
- +-- util:1.1
- +-- xml-helper:1.1
- logic:1.1
- +-- util:1.1
- +-- xml-helper:1.1
- gui:1.1
Run Code Online (Sandbox Code Playgroud)
问题是:我应该xml-helper:1.1
在core
's和logic
pom.xml中声明为依赖吗?当我使用util
模块时,该依赖关系将自动解决(传递).
如果我宣布它,我会得到一个更大的pom来维持.
如果我跳过它,当依赖关系随着时间的推移而演变时,我可能会遇到麻烦.
你在这里有几个问题,所以我会尽量一一回答。
这是完全合理的,但我们应该如何解决我们的内部依赖?
看起来您有一个基于模块的项目。为了减轻版本冲突,我建议采用以下两种可能性之一:
dependencyManagement
部分,并为您的版本使用属性。 dependencyManagement
部分。查看此答案以获取更多信息。
我的直觉告诉我 - 摆脱对意大利面的依赖。有人会证明我是错的吗?
我认为这是一个主观问题,之前可能有人问过,但我仍然会给出我的意见。
不,我认为你在正确的轨道上。我并不完全赞同“如果你正在使用它们,就声明你的传递依赖”的观点。使用 maven 的一大好处是您可以获得可传递的依赖项。如果你必须为你使用的所有东西声明依赖关系,我想你的 poms 会很快变成难以管理的野兽。
问题是:我应该将 xml-helper:1.1 声明为 core 和 logic 的 pom.xml 中的依赖项吗?
同样,我倾向于dependencyManagement
在每个 pom.xml 中使用而不是声明。
我希望这有帮助!
归档时间: |
|
查看次数: |
1042 次 |
最近记录: |