我在pom.xml中提供了servlet-api版本2.5作为范围.这是依赖项的一部分:我的项目的树输出."从2.3管理的版本;从编译管理的范围"是什么意思?
[INFO] +- commons-logging:commons-logging:jar:1.1:compile
[INFO] | \- javax.servlet:servlet-api:jar:2.5:provided (version managed from 2.3; scope managed from compile)
Run Code Online (Sandbox Code Playgroud)
这是否意味着我的类路径上版本2.3存在一些传递依赖?我的WAR文件根本没有servlet-api jar,但是我确实使用了旧版本的Spring 2.5.4.我怀疑Spring框架依赖于servlet-api 2.3.
我在理解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.
谢谢.