您的位置:首页 > 其它

Maven 的聚合和继承

2018-03-28 20:37 316 查看
    聚合:当一个服务有多个模块组成时,为了满足一次命令构建多个模块,需要创建一个额外的模块,通过这个额外的模块来构建整个项目,这个操作就是聚合。

    继承:当聚合了多个模块之后,各个模块的 POM 中可能会有很多相同的配置,可以通过子项目继承父项目的配置消除配置重复,这个就是继承。子项目是一个服务的多个模块,父项目即为聚合时创建的那个额外的模块。

聚合模块的创建过程(IDE:Eclipse)

父模块:

    1.创建 Maven Project 项目

    2.跳过选择骨架

    3.将 packaging 定义为 pom 类型

    4.填写 Name

    5.填写 Group Id 和 Artifact Id

子模块:

    1.创建 Maven Moudule 子模块

    2.packaging 定义为 jar 类型

    3.填写 Name

    4.Group Id、Artifact Id 与父模块相同,Artifact Id 也可以自定义

继承结构及问题

    在创建了聚合的项目之后,在父 POM 中声明一些配置供子 POM 继承,实现“一处声明,多出使用”的目的。

例如:

<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.6</version>
</dependency>
</dependencies>


    子模块继承了父模块的配置,然而这种继承,不管子模块是否需要这些配置,父模块统统塞给子模块,这就给子模块带来了不必要的依赖。我们可以通过在父模块中使用下面这种方式,让子模块需要的时候引入,不需要的时候不引入。

父:

<properties>
<spring.version>4.3.1</spring.version>
<junit.version>4.0</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>


子:

    子模块中引入了 spring-core 和 junit 的依赖,没有引入 spring-beans ,也没有指定版本和依赖范围。

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Maven 聚合 继承