maven循环依赖关系+;继承最佳实践
我有以下几个项目结构:项目a、B、C 它们都在父项目D下。在pom.xml的D文件夹下:maven循环依赖关系+;继承最佳实践,maven,dependency-management,Maven,Dependency Management,我有以下几个项目结构:项目a、B、C 它们都在父项目D下。在pom.xml的D文件夹下: <module>A</module> <module>B</module> <module>C</module> 其中大多数是可传递的依赖项,而不是我的项目直接需要的依赖项。将它们作为依赖项放在父D的pom.xml中,让子项目(A、B、C)从D继承它们,这有意义吗?我注意到,如果您这样做,mvn dependency:tree将给您类
<module>A</module>
<module>B</module>
<module>C</module>
其中大多数是可传递的依赖项,而不是我的项目直接需要的依赖项。将它们作为依赖项放在父D的pom.xml中,让子项目(A、B、C)从D继承它们,这有意义吗?我注意到,如果您这样做,mvn dependency:tree将给您类似的警告
[WARNING] Unused declared dependencies found: log4j, slf4j ....
如果这给了我警告,我想这是maven不建议你做的事情
- 只声明模块的直接依赖项,可传递依赖项由maven自动处理(这是使用maven的主要原因之一)
- 仅声明所需的依赖项:例如,在slf4j的情况下,您只需要一个依赖于
的模块,所有其他模块只需要依赖于slf4j apislf4j-log4j12
- 在父pom中定义版本,以便所有子模块使用相同的版本。在
部分执行以下操作:dependencyManagement
org.slf4j slf4j api 1.6.4
- 对于每个模块,在模块pom中指定所有直接依赖项,但不指定如下版本:
org.slf4j slf4j api
X
),它除了依赖于每个所需的工件之外,什么都不做。现在,每个模块只需要依赖于X
即可自动依赖于其依赖项。但我不推荐这种方法,因为(除其他原因外)现在每个模块都依赖于X
中的依赖项,如果从X
中删除依赖项,您无法确定会发生什么,您需要查看多个pom才能找到模块直接依赖项
希望这有点帮助:-)
- 只声明模块的直接依赖项,可传递依赖项由maven自动处理(这是使用maven的主要原因之一)
- 仅声明所需的依赖项:例如,在slf4j的情况下,您只需要一个依赖于
的模块,所有其他模块只需要依赖于slf4j apislf4j-log4j12
- 在父pom中定义版本,以便所有子模块使用相同的版本。在
部分执行以下操作:dependencyManagement
org.slf4j slf4j api 1.6.4
- 对于每个模块,在模块pom中指定所有直接依赖项,但不指定如下版本:
org.slf4j slf4j api
X
),它除了依赖于每个所需的工件之外,什么都不做。现在,每个模块只需要依赖于X
即可自动依赖于其依赖项。但我不推荐这种方法,因为(除其他原因外)现在每个模块都依赖于X
中的依赖项,如果从X
中删除依赖项,您无法确定会发生什么,您需要查看多个pom才能找到模块直接依赖项
呵呵
[WARNING] Unused declared dependencies found: log4j, slf4j ....
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>