dependencyManagement的用法
dependencyManagement是 Maven 中一个非常有用的元素,它允许你在父 POM(或 BOM - Bill of Materials)中管理依赖项的版本和配置,而不实际引入这些依赖项到父 POM 的类路径中。这意味着你可以集中控制项目依赖项的版本,确保在整个项目或一组模块中使用相同版本的库。例子详细用法请参考 链接
例子的目录结构如下:
bash
.
├── module1
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── future
│ │ │ └── demo
│ │ │ └── module1
│ │ │ └── Module1Util.java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── parent
└── pom.xmlparent/pom.xml内容如下:
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.future.demo</groupId>
<artifactId>demo-parent</artifactId>
<!-- 定义父模块类型为pom -->
<packaging>pom</packaging>
<version>1.0.0</version>
<properties>
<!-- 指定maven-compiler-plugin插件使用的jdk版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<modules>
<!-- 使用相对路径指向子模块 -->
<module>../module1</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- commons-lang3统一版本管理 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>module1/pom.xml内容如下:
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.future.demo</groupId>
<artifactId>demo-parent</artifactId>
<version>1.0.0</version>
<!-- 指定parent项目的相对路径,否则编译时报错 -->
<relativePath>../parent</relativePath>
</parent>
<artifactId>module1</artifactId>
<!-- 指定构件被构建的类型为jar -->
<packaging>jar</packaging>
<dependencies>
<!-- 父级pom.xml使用dependencyManagement管理common-lang3的版本,所以引用时不需要指定版本 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
</project>以上module1/pom.xml中引用的org.apache.commons:commons-lang3不需要指定版本,因为在parent/pom.xml中已经使用dependencyManagement进行版本管理
切换到parent目录编译项目
bash
mvn package