Maven 的聚合和继承
2018-03-28 20:37
316 查看
聚合:当一个服务有多个模块组成时,为了满足一次命令构建多个模块,需要创建一个额外的模块,通过这个额外的模块来构建整个项目,这个操作就是聚合。
继承:当聚合了多个模块之后,各个模块的 POM 中可能会有很多相同的配置,可以通过子项目继承父项目的配置消除配置重复,这个就是继承。子项目是一个服务的多个模块,父项目即为聚合时创建的那个额外的模块。
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 也可以自定义
例如:
子模块继承了父模块的配置,然而这种继承,不管子模块是否需要这些配置,父模块统统塞给子模块,这就给子模块带来了不必要的依赖。我们可以通过在父模块中使用下面这种方式,让子模块需要的时候引入,不需要的时候不引入。
父:
子:
子模块中引入了 spring-core 和 junit 的依赖,没有引入 spring-beans ,也没有指定版本和依赖范围。
继承:当聚合了多个模块之后,各个模块的 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之详解继承与聚合
- Maven详解之聚合与继承
- maven7—依赖冲突,聚合和继承
- maven聚合与继承
- maven的聚合与继承
- maven的聚合与继承
- Maven核心概念之依赖,聚合与继承
- Maven详解 之 聚合与继承
- Maven学习总结(五)——聚合与继承
- maven之聚合和继承
- eclipse中的maven管理之聚合与继承和版本的简单管理(三)
- maven聚合与继承
- Maven中聚合与继承的关系
- maven的聚合模块和pom继承使用
- Eclipse下Maven工程多模块继承和聚合的创建
- Maven聚合与继承
- Maven详解之聚合与继承
- Maven - 实例-6-聚合与继承
- maven 聚合和继承