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 工程的聚合与依赖的主要内容,如果未能解决你的问题,请参考以下文章

maven的依赖和聚合

SpringBoot+vue+实战项目之第2集

Maven聚合工程

maven-聚合与继承

项目一众筹00_07Maven概念:继承聚合创建Maven Web动态工程(问题)_Maven_servlet-api和jsp-api包依赖

maven聚合(依赖聚合)