欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

maven聚合与继承

程序员文章站 2022-05-04 12:30:19
...
8.2聚合
为了能够一条命令构建A-1,A-2,A-3多个模块,我们需要新建一个A-aggregator模块,然后通过该模块构建整个项目的所有模块。
A-aggregator本身作为一个maven项目,有自己的pom,同时作为一个聚合项目。
<project>
    <modleVersion>4.0.0</modleVersion>
    <version>1.0.0-SNAPSHOT</version>
    <groupId>com.shusheng.demo</gourpId>
    <artifactId>A-aggregator</artifactId>
    <packaging>pom</packaging>
    <name>A aggregator</name>
    <modules>
        <module>A-1</module>
        <module>A-2</module>
        <module>A-3</module>
    </modules>
</project>


上面配置版本与其他两个模块版本一致,对于聚合模块来说,其packaging必须配置为pom,否则无法构建。


8.3继承
面向对象设计中,程序员可以建立一种父子结构,然后在父类中声明一些字段和方法供子类继承,这样就可以做到一出声明,多处使用。
在>A-aggregator下创建一个A-parent的子目录,然后在该子目录下建立一个所有除A-aggregator之外模块的父模块。为此在该子目录下创建一个pom.xml
<project>
    <modleVersion>4.0.0</modleVersion>
    <version>1.0.0-SNAPSHOT</version>
    <groupId>com.shusheng.demo</gourpId>
    <artifactId>A-parent</artifactId>
    <packaging>pom</packaging>
    <nameA parent</name>
</project>
该pom很简单,它使用与其他模块一致的goupId和version,packaging为pom,这一点与聚合模块一样,作为父模块的pom,其打包类型也必须为pom
由于父模块职位消除配置的重复,因此它本身不包含出pom之外的项目文件,也就不需要src/main/java之类的文件了
A-1子模块的pom修改如下:
<project>
    <modleVersion>4.0.0</modleVersion>
    <parent>
          <version>1.0.0-SNAPSHOT</version>
         <groupId>com.shusheng.demo</gourpId>
         <artifactId>A-parent</artifactId>
         <relativePath>../A-parent/pom.xml</relativePath>
    </parent>
    <artifactId>A-1</artifactId>
    <packaging>pom</packaging>
    <nameA 1</name>
</project>
A-aggregator配置修改:
<project>
    <modleVersion>4.0.0</modleVersion>
    <version>1.0.0-SNAPSHOT</version>
    <groupId>com.shusheng.demo</gourpId>
    <artifactId>A-aggregator</artifactId>
    <packaging>pom</packaging>
    <name>A aggregator</name>
    <modules>
        <module>A-1</module>
        <module>A-2</module>
        <module>A-3</module>
        <module>A-parent</module>
    </modules>
</project>
maven聚合与继承

8.3.2可集成的pom元素:
groupId:项目组Id,项目坐标核心元素
version:项目版本,项目坐标核心元素
description:项目的描述
organization:项目的组织信息
inceptionYear:项目创建的年份
url:项目的url地址
developers:项目的开发者信息
contributors:项目的贡献这信息
distribution:项目的部署配置
issueManagement:项目的缺陷跟踪系统信息
ciManagement:项目的持续集成系统信息
sem:项目的版本控制系统信息
mailingLists:项目邮件列表信息
porperties:自定义的maven属性
dependencies:项目的依赖配置
dependencyManagement:项目以来管理配置
repositories:项目仓库配置
build:包括项目的源码目录配置,输出目录配置,插件配置,插件管理配置等
reporting:包括项目的报告输出目录配置,报告插件配置等。
8.3.3以来管理
将版本号声明为常量
<project>
    <modleVersion>4.0.0</modleVersion>
    <version>1.0.0-SNAPSHOT</version>
    <groupId>com.shusheng.demo</gourpId>
    <artifactId>A-parent</artifactId>
    <packaging>pom</packaging>
    <name>A parent</name>
    <properties>
        <springframework.version>4.7</springframework.version>
        <junit.version>4.11</junit.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                 <groupId>org.springframework</gourpId>
                 <artifactId>spring-core</artifactId>
                 <version>${springframework.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>