Maven 工程的聚合与依赖
Posted 造飞机咯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven 工程的聚合与依赖相关的知识,希望对你有一定的参考价值。
工程的聚合与依赖
1 聚合
当项目是多模块时,如何一次构建多个模块,而不是要分别到多个模块下分别执行Maven命令。
1.1 父子结构
<!--父模块netsales-poss中的packaging必须为pom-->
<packaging>pom</packaging>
<!--父模块netsales-poss中的pom.xml中引入子模块-->
<modules>
<module>poss-basic</module>
<module>poss-core</module>
<module>poss-openapi</module>
</modules>
1.2 平行结构
<!--父模块netsales-parent中的packaging必须为pom-->
<packaging>pom</packaging>
<!--父模块netsales-parent中的pom.xml中引入子模块-->
<modules>
<module>../netsales-framework</module>
<module>../netsales-jobs</module>
</modules>
<modelu>
中的路径可以理解为模块pom.xml的相对路径
在父模块中执行Maven的构建命令时,maven给根据各个模块之间的依赖关系,依次构建各个模块
2 继承
多个子项目都需要某些依赖,就可以把子项目共同的依赖抽取到父项目中,子项目通过继承得到这些依赖,便于管理。
<!--poss-openapi模块中使用parent标签指定父模块-->
<parent>
<groupId>com.aster.netsales.poss</groupId>
<artifactId>netsales-poss</artifactId>
<version>1.1.0</version>
</parent>
2.1 dependencyManagement依赖继承
父模块使用 dependencyManagement
标签来管理依赖,子项目默认不继承,可以配置继承。
<dependencyManagement>
<dependencies>
<!-- 子 pom 可以配置继承 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<!-- 子 pom 不可以继承 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.6</version>
<optional>true</optional>
</dependency>
</dependencies>
</dependencyManagement>
子模块配置父模块在dependencyManagement
中的依赖时,不需要版本, 会从父项目继承, 如果指定版本就是代表不是来自父 pom 而是子 pom 自己的
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 父项目的 swagger 是不能继承的 -->
</dependencies>
2.2 dependencies依赖继承
父模块中使用<dependencies>
申明的依赖,子模块默认会全部继承。
以上是关于Maven 工程的聚合与依赖的主要内容,如果未能解决你的问题,请参考以下文章
项目一众筹00_07Maven概念:继承聚合创建Maven Web动态工程(问题)_Maven_servlet-api和jsp-api包依赖