【maven笔记】继承&聚合

目录

1. 继承&聚合实战

1.1 pom规则

2. 项目继承

2.1 可继承的元素

2.2 覆盖

3. 聚合

3.1 父模块步骤


1. 继承&聚合实战

创建一个maven项目,右击创建Module模块,可以创建子模块。子模块继承顶层项目,顶层项目由子模块聚合而成。
 

1.1 pom规则

  1. 将父POM的packaging更改为值“ pom”。 
  2. 在父POM中指定其模块的目录(子POM)module
  3. 在每个子POM中指定其父POM是谁。 parent 
<!-- 父pom -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wy</groupId>
    <artifactId>dubbo-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>dubbo-demo-api</module>
        <module>dubbo-demo-provider</module>
        <module>dubbo-demo-consumer</module>
    </modules>
</project>

<!-- 子pom -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>dubbo-demo</artifactId>
        <groupId>com.wy</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dubbo-demo-api</artifactId>
</project>

<!-- ......其余两个子模块大致相同,处理artifactId -->

2. 项目继承

类似与Java所有类都隐式地继承自Object,maven中所有模块都隐式继承自Super POM(http://maven.apache.org/ref/3-LATEST/maven-model-builder/super-pom.html),也可以在pom文件通过parent元素指定父模块,类似于java extends继承。

继承的目的也是为了复用,如果有多个Maven项目,并且它们都有相似的配置,则可以通过提取那些相似的配置放入一个父项目,并将多个Maven项目继承该父项目这样一些公共配置能够应用于所有项目。

2.1 可继承的元素

  • groupId and / or the version 组和版本 如上面的样例,子模块无需声明这两个元素
  • dependencies 依赖 一般在父pom中声明dependencieManagement 下的dependencies
  • resources 资源配置 如超级pom中声明了资源路径是${project.basedir}/src/main/resources
  • plugin lists (including reports) 插件
  • plugin executions with matching ids 插件绑定
  • plugin configuration 插件配置
  • developers and contributors 开发者

如super POM中(源码路径maven/maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml)指定了以下元素,所以所有的maven项目有默认使用的插件版本

2.2 覆盖

可以通过在子模块pom文件中重写元素覆盖从父模块继承而来的配置。

3. 聚合

主要通过modules.module指定子模块,聚合主要是一个大项目可以划分层次或者其它划分方法 分为多个模块,每个模块间既可以项目独立,也可以加依赖。如一个web项目,我可以划分为web层、service层和dao层等等,每一层单独一个模块,每个模块有着自己独立的依赖,高层次模块可以依赖低层次模块,这样的项目更加清晰。最终可以打包成一个大项目。

3.1 父模块步骤

  • 将父模块pom的 packaging 改为"pom".  
    <packaging>pom</packaging>
  • 声明子模块的路径
    <modules>
        <module>dubbo-demo-api</module>
        <module>dubbo-demo-provider</module>
        <module>dubbo-demo-consumer</module>
    </modules>
发布了92 篇原创文章 · 获赞 14 · 访问量 5840

猜你喜欢

转载自blog.csdn.net/sarafina527/article/details/103196547