Maven 学习笔记(二) :Maven的聚合和继承

Maven的聚合和继承

Maven的聚合

Maven的聚合也叫多模块,需要新建一个Maven项目用来聚合多个模块

聚合模块的POM

<groupId>com.huyp.account</groupId>
<artifactId>account-aggregator</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
    <module>account-email</module>
    <module>account-persist</module>
</modules>

注意:不再是使用默认的jar,而是pom,Maven会首先解析聚合模块的POM、分析要构建的的模块,并计算处一个反应堆构建顺序,然后根据这个顺序依次构建各个模块。反应堆是所有模块组成的一个构建结构。

Maven的继承

对于多模块中很多相同的配置,可以创建POM的父子结构,然后在父POM中声明一些配置供子POM继承,以实现”一处声明,多处使用”的目的

父模块POM

<groupId>com.huyp.account</groupId>
<artifactId>account-parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>

注意:不再是使用默认的jar,而是pom

子模块POM

<parent>
    <groupId>com.huyp.account</groupId>
    <artifactId>account-parent</artifactId>
    <version>1.0.0</version>
    <relativePath>../account-parent/pom.xml</relativePath>
</parent>

<artifactId>account-email</artifactId>

注意:子模块从父模块继承了和节点

依赖的继承

因为不是所有模块的依赖都一样,所以简单的全盘继承存在问题,Maven提供了dependencyManagement元素,dependencyManagement元素下的依赖声明并不会实际的引入,不过它能够约束dependencies下依赖的使用。

父模块POM

<properties>
    <springframework.version>2.5.6</springframework.version>
</properties>

<dependencyManagement>
    <denpendencies>
        <denpendencie>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${springframework.version}</version>
        </denpendencie>
    </denpendencies>
</dependencyManagement>

注意:这里声明的依赖既不会给父模块引入依赖,也不会给子模块引入依赖,但是这个配置是可以被继承的

子模块POM

<denpendencies>
    <denpendencie>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </denpendencie>
</denpendencies>

注意:子模块只会引入自己定义的依赖,但是继承于父节点,可以用来解决模块间依赖版本冲突的问题

插件的继承

跟依赖的继承一样,Maven也提供了pluginManagement用来处理插件的继承

父模块POM

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

子模块POM

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
        </plugin>
    </plugins>
</build>

反应堆

在一个多模块的Maven项目中,反应堆(Reactor)是指所有模块组成的一个构建结构,Maven根据模块间的继承和依赖关系自动计算处合理的模块构建顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值