【发布时间】:2020-06-12 16:54:45
【问题描述】:
根据 maven 文档Dependency management
是一种集中依赖信息的机制。
从这里SO Question的这个问题来看,当我们有一个供所有孩子使用的公共jar文件时,很多人建议使用Dependency managmement而不是dependencies。
与 dependency management 一样,依赖项仅在孩子请求时传播,但在 dependencies 的情况下,即使不需要,也会传播依赖项。
但是当 jar 文件对所有孩子都通用时,这不是更好的方法,即当所有孩子都继承同一个 jar 文件时
例如(取自 maven 文档的重写示例)
孩子
<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
</dependency>
<dependency>
<groupId>group-c</groupId>
<artifactId>artifact-b</artifactId>
</dependency>
</dependencies>
孩子 b
<dependencies>
<dependency>
<groupId>group-c</groupId>
<artifactId>artifact-b</artifactId>
</dependency>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-b</artifactId>
</dependency>
</dependencies>
a 和 b 的父级
<dependencyManagement>
<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
但这不会产生相同的结果吗??
a 和 b 的父级
<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
孩子
<dependencies>
<dependency>
<groupId>group-c</groupId>
<artifactId>artifact-b</artifactId>
</dependency>
</dependencies>
孩子 b
<dependencies>
<dependency>
<groupId>group-c</groupId>
<artifactId>artifact-b</artifactId>
</dependency>
</dependencies>
还是我误会了??
我应该在什么条件下使用哪一个??
【问题讨论】:
标签: java maven dependencies pom.xml