【发布时间】:2015-02-18 18:51:24
【问题描述】:
当它声明从 x 管理的版本时,我无法理解 maven 依赖树中发生的情况;省略重复。
例如,假设我在server-a 的依赖管理部分定义了enterprise-data-2.4。
我在server-a 的依赖关系树中得到以下内容,其中一个依赖关系server-b 拉入enterprise-data-2.4。
[INFO] +- hello.world.welcome.to:server-b:jar:3.1-SNAPSHOT:runtime
[INFO] | +- (hello.world.where.am: enterprise-data:jar:2.4:runtime - version managed from 3.0; omitted for duplicate)
假设server-b 是拉入enterprise-data-2.4 的唯一罐子,我的理解是server-a 将始终拉入enterprise-data-2.4 此处。这是正确的吗?
然而,server-b 中的代码依赖于enterprise-data-3.0,而server-b 的编译时间依赖于enterprise-data-3.0。
现在,我有一个测试项目,比如说test-b,它测试server-b 存在于server-a 项目中的jar,并且对enterprise-data-3.0 有一个测试依赖项。这些测试直接命中server-a 上的代码。
当我在test-b 中运行我的测试时,我是否应该在尝试访问enterprise-data-3.0 中存在的功能时出错,因为它没有被server-a 拉入,或者它会通过,因为enterprise-data-3.0 存在测试依赖关系?它目前通过了,但我不确定测试依赖是否足够。
请帮助我理解。
编辑:我正在使用maven-3。
谢谢。
【问题讨论】:
-
Maven 依赖中介传递依赖的工作通过使用第一个声明作为主。由于跟踪传递依赖项很麻烦,因此您确实应该研究依赖项管理。基本上在这里查看我的答案以了解详细信息:stackoverflow.com/a/26317934/136363
-
@t0mppa - 我正在使用依赖管理来引入企业数据 2.4。请再次阅读我的问题。
-
好的,重新阅读并尝试回答您的问题。如果我仍然误解了你,请用一些具体的例子来编辑你的问题。
标签: java maven dependency-management