Maven(一) 工程的聚合与依赖

工程的聚合与依赖

1 聚合

当项目是多模块时,如何一次构建多个模块,而不是要分别到多个模块下分别执行Maven命令。

1.1 父子结构

image-20200625215626180

<!--父模块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 平行结构

image-20200625220031080

<!--父模块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>申明的依赖,子模块默认会全部继承。

猜你喜欢

转载自www.cnblogs.com/lyldelove/p/13193366.html