col*_*ian 14 java dependency-management maven
我在理解maven依赖树中发生的版本时会遇到问题,因为它说明了从x管理的版本; 省略重复.
例如,假设我已经enterprise-data-2.4在依赖关系管理部分中定义了server-a.
我得到的依赖关系树下面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)
Run Code Online (Sandbox Code Playgroud)
假设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-bjar server-a并且具有测试依赖性enterprise-data-3.0.这些测试直接命中了代码server-a.
当我运行我的测试时,test-b我是否会在尝试访问存在的功能时遇到错误,enterprise-data-3.0因为它没有被引入server-a或者它会通过,因为存在测试依赖性enterprise-data-3.0?它目前通过,但我不确定测试依赖是如何充分的.
请帮我理解.
编辑:我正在使用maven-3.
谢谢.
例如,假设我在 server-a 的依赖项管理部分定义了Enterprise-data-2.4。
然后你总是得到 2.4,即使只有依赖于 1.8 的 JAR。依赖管理覆盖依赖中介。
假设server-b是唯一拉入enterprise-data-2.4 的罐子,我的理解是server-a将始终在这里拉入Enterprise-data-2.4。这样对吗?
假设你没有依赖管理,那么是的。如果存在多个依赖于不同版本的依赖项,那么根据 Maven 版本 > 2.0.9 的依赖项中介规则,首先加载哪个(及其传递依赖项)是一个问题。其他将是:“从 x 管理并省略重复”。
当我在test-b 中运行我的测试时,我是否应该在尝试访问企业数据 3.0 中存在的功能时出错,因为它没有被服务器 a拉入,或者它会通过,因为存在对企业数据的测试依赖- 3.0 ? 它目前通过了,但我不确定测试依赖是否足够。
如果它使用不兼容的代码提取错误的版本,是的,您会看到错误。对于 Maven 3,使用 3.0 定义测试范围依赖项并使用 2.4 编译范围依赖项将意味着 Maven 覆盖 2.4 并使用在测试范围上定义的更新范围。有关更多详细信息,请参阅此问题及其答案。
尽管如此,您始终可以在test-b 中使用依赖项管理来修复您要使用的每个依赖项的版本。
| 归档时间: |
|
| 查看次数: |
19134 次 |
| 最近记录: |