了解 eclipse maven 依赖层次结构
Understanding eclipse maven dependency hierarchy
我想了解多模块 Maven 项目的依赖关系以及引用 eclipse 依赖关系层次结构的依赖关系。
我理解的还算可以,但是有些地方我完全看不懂。
下面是屏幕截图。
我没看懂的是:
--> 从 1.0.2 开始管理 [编译}
-->从1.0.2开始管理(与1.0.0冲突省略)[编译]
我确实在网上搜索过,但我得到了痕迹中的信息。谁能帮我理解通俗易懂的意思?
谢谢。
Maven 从依赖树 构建一个平面类路径,每个用于编译 ([compile]
), 用于测试,用于运行宁。
在平面类路径中,与 OSGi 不同,依赖项只能存在于一个版本中。在您裁剪的屏幕截图中,除其他外还有第二层:
kafka-streams
1.0.2 和
kafka-clients
1.0.0.
kafka-streams
1.0.2 要求 kafka-clients
1.0.2 与 kafka-clients
1.0.0 冲突。因此 kafka-streams
1.0.2 因与 1.0.0 冲突而被 省略,即使此处需要版本 1.0.2("managed from 1.0.2").
更详细:
用于编译或运行普通Java应用程序的类路径是扁平的:所有必需的库全局指定为有序列表。不可能对一个包使用特定版本的库,而对另一个包使用不同版本的相同库。
在 Maven 中,依赖关系构建了一棵树:每个依赖关系可能有自己的依赖关系。 Maven 将依赖关系树映射到类路径,这是一个有序的库列表。如果在 Maven 依赖关系树中,相同的库存在于不同的版本中,则不可能创建平面类路径。这是一个冲突。
这个冲突通过选择一个版本并忽略所有其他版本来解决。在使用picked version而不是required version的地方,显示(managed from <required but not picked version>)
和(omitted for conflict with <picked version to use instead>)
。
此外,Maven可以创建不同的类路径来编译,测试或运行 Java 通过所谓的 scopes 申请。 [compile]
范围是在所有任务中使用库的默认范围:编译、测试和 运行ning。
确保pom.xml
文件中指定的版本彼此兼容(这还不是屏幕截图中的案例):您必须 将 kafka-clients
从 1.0.0 升级到 1.0.2(或降级其他库)。
我想了解多模块 Maven 项目的依赖关系以及引用 eclipse 依赖关系层次结构的依赖关系。
我理解的还算可以,但是有些地方我完全看不懂。
下面是屏幕截图。
我没看懂的是:
--> 从 1.0.2 开始管理 [编译}
-->从1.0.2开始管理(与1.0.0冲突省略)[编译]
我确实在网上搜索过,但我得到了痕迹中的信息。谁能帮我理解通俗易懂的意思?
谢谢。
Maven 从依赖树 构建一个平面类路径,每个用于编译 ([compile]
), 用于测试,用于运行宁。
在平面类路径中,与 OSGi 不同,依赖项只能存在于一个版本中。在您裁剪的屏幕截图中,除其他外还有第二层:
kafka-streams
1.0.2 和kafka-clients
1.0.0.
kafka-streams
1.0.2 要求 kafka-clients
1.0.2 与 kafka-clients
1.0.0 冲突。因此 kafka-streams
1.0.2 因与 1.0.0 冲突而被 省略,即使此处需要版本 1.0.2("managed from 1.0.2").
更详细:
用于编译或运行普通Java应用程序的类路径是扁平的:所有必需的库全局指定为有序列表。不可能对一个包使用特定版本的库,而对另一个包使用不同版本的相同库。
在 Maven 中,依赖关系构建了一棵树:每个依赖关系可能有自己的依赖关系。 Maven 将依赖关系树映射到类路径,这是一个有序的库列表。如果在 Maven 依赖关系树中,相同的库存在于不同的版本中,则不可能创建平面类路径。这是一个冲突。
这个冲突通过选择一个版本并忽略所有其他版本来解决。在使用picked version而不是required version的地方,显示(managed from <required but not picked version>)
和(omitted for conflict with <picked version to use instead>)
。
此外,Maven可以创建不同的类路径来编译,测试或运行 Java 通过所谓的 scopes 申请。 [compile]
范围是在所有任务中使用库的默认范围:编译、测试和 运行ning。
确保pom.xml
文件中指定的版本彼此兼容(这还不是屏幕截图中的案例):您必须 将 kafka-clients
从 1.0.0 升级到 1.0.2(或降级其他库)。