ans*_*elm 11 java dependencies pom.xml maven
在一个大的Maven 2项目中,让依赖关系管理确保在整个系统中只使用一个依赖项版本是很好的.这使得系统保持一致.
但是当我生成有效的POM时,我没有机会看到依赖版本的来源.同样,在层次结构顶部的POM中,我不知道在子POM中确实使用了依赖关系管理部分的定义版本.
那么如何清理依赖关系管理呢?当我删除一个项目中的依赖项时,我总是检查所有其他项目是否仍然需要它,以便我也可以从顶部的依赖项管理中删除?
另外,如何构建依赖关系管理,确保它不会在子POM中的某处复制?当我添加依赖项时,我总是检查所有其他项目,看它是否可能在依赖项管理中聚合在一起?或者你是否总是将所有依赖版本从头开始移动到顶部,这样它们总是只在一个地方?
谢谢你的任何想法.
您可以为项目创建一个或多个boms(物料清单).这些pom.xmls将在dependencyManagement部分中声明项目中使用的所有依赖项.
在每个子pom中,您将导入这些boms并使用项目所需的那些依赖项.
通过这种方式,依赖版本可以集中管理,同时,每个子pom只使用它需要的依赖项.
请参阅导入托管依赖项
BOM项目
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>my.group</groupId>
<artifactId>My-Project-Bom</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.7.0</version>
</dependency>
...
</dependencies>
</dependencyManagement>
</project>
Run Code Online (Sandbox Code Playgroud)
儿童项目
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>my.group</groupId>
<artifactId>child1</artifactId>
<packaging>jar</packaging>
<name>Child1</name>
<version>1.0</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>My-Project-BOM</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
</dependencies>
...
</project>
Run Code Online (Sandbox Code Playgroud)
maven依赖插件有一些目标可以帮助您获得依赖层次结构.
mvn dependency:list
mvn dependency:tree
mvn dependency:analyze
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9294 次 |
| 最近记录: |