maven <dependencyManagement>标签的作用

发布时间:2022-07-07 12:33:27 作者:yexindonglai@163.com 阅读(878)

作用

dependencyManagement标签的作用:在父工程pom文件中声明依赖,但不引入;在子工程中用到声明的依赖时,可以不加依赖的版本号,这样可以统一管理工程中用到的依赖版本。

示例

先创建一个项目 dependencyManagement-demo

在pom.xml内加入以下内容

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>com.alibaba</groupId>
  5. <artifactId>fastjson</artifactId>
  6. <version>1.1.36</version>
  7. </dependency>
  8. <dependency>
  9. <groupId>com.google.guava</groupId>
  10. <artifactId>guava</artifactId>
  11. <version>19.0</version>
  12. </dependency>
  13. </dependencies>
  14. </dependencyManagement>
  15. <dependencies>
  16. <dependency>
  17. <groupId>junit</groupId>
  18. <artifactId>junit</artifactId>
  19. <version>4.12</version>
  20. </dependency>
  21. </dependencies>

如下图可以看到,<dependencyManagement>标签内的依赖并未引入,因为它只起到声明作用

接下来我们改一下代码,将 fastjson 和 guava 加到下面的 dependencies 标签中

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>com.alibaba</groupId>
  5. <artifactId>fastjson</artifactId>
  6. <version>1.1.36</version>
  7. </dependency>
  8. <dependency>
  9. <groupId>com.google.guava</groupId>
  10. <artifactId>guava</artifactId>
  11. <version>19.0</version>
  12. </dependency>
  13. </dependencies>
  14. </dependencyManagement>
  15. <dependencies>
  16. <dependency>
  17. <groupId>junit</groupId>
  18. <artifactId>junit</artifactId>
  19. <version>4.12</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>com.alibaba</groupId>
  23. <artifactId>fastjson</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>com.google.guava</groupId>
  27. <artifactId>guava</artifactId>
  28. </dependency>
  29. </dependencies>

然后我们可以看到,这2个依赖也引入了,需要注意的是,在下面的 dependencies 标签中引入依赖,并未加版本号

子项目引用父项目

接下来创建一个子项目 child,结构如下

在子项目中引用父项目

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>dependencyManagement-demo</artifactId>
  7. <groupId>org.example</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>child</artifactId>
  12. </project>

可以看到,子项目自动继承了父项目的依赖

关键字Maven