maven 聚合和继承

聚合和继承:
聚合:
Maven会首先解析聚合模块的POM,分析要构建的模块,并计算出一个反应堆构建顺序,然后根据这个顺序依次构建各个模块。
继承:
就是抽象各个模块中重复的配置。在父pom中声明一些配置提供给子pom中使用。以实现移除声明多处使用的目的。
作为父模块中的POM,其打包类型必须是pom,由于父模块只是为了消除重复的配置,它本身不包括pom之外的项目文件也就不需要src/main/java之类的文件了。
例如:
<parent>
          <groupId>com.alibaba</groupId>
          <artifactId>alifi</artifactId>
          <version>1-RC1</version>
     </parent>
     <groupId>com.alifi.aliloan.myth</groupId>          <!-- 定义了项目属于哪个组,这个组往往和项目所在的组织和公司存在关联,一般是域名反向一一对应 -->
     <artifactId>myth.parent</artifactId>             <!-- 定义了当前maven项目在组中的唯一的ID,你可能会为不同的子项目(模块)分配不同的artifactId -->
     <version>3.4.0-SNAPSHOT</version>             <!-- version 表示当前项目的版本,-SNAPSHOT 译为快照 -->
     <packaging>pom</packaging>                         <!-- 打包类型,如果没有指定默认为jar -->
     <name>Myth Parent POM</name>                 <!-- name声明了一个对于用户更为有好的项目名称,方便信息交流 -->
     <description>淘宝纯信用贷款</description>
     <modules>
          <module>myth.biz.creditapply</module>
          <module>myth.bundle.war</module>
     </modules>


子模块:
<parent>
          <groupId>com.alifi.aliloan.myth</groupId>
          <artifactId>myth.parent</artifactId>
          <version>3.5.1-SNAPSHOT</version>
          <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>myth.biz</artifactId>
     <version>${project.parent.version}</version>
     <name>myth.biz</name>
     <packaging>jar</packaging>



dependencies下面所有的依赖会自动被子pom完全继承和覆盖。
dependencyManagement 只是给出该依赖的信息,子pom如果用的话,还需要在dependencies下声明,只是不用在写具体的version了。

依赖管理:
dependencyManagement 元素既能够让子模块继承到父模块的以来配置,又能保证子模块使用的灵活性。在dependencyManagement声明的依赖不会被引入实际的依赖,不过能够约束dependencies的使用。
好处:在父类里面约束依赖的版本,一份配置不会被到处引用。
插件管理:
<build>
          <finalName>myth</finalName>
<pluginManagement>
        <plugins>
               <!-- maven compiler plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>               <!-- maven compiler plugin -->
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${java.encoding}</encoding>
                </configuration>
            </plugin>
               <!-- maven surefire plugin -->
               <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <includes>
                        <include>**/*Test.java</include>
                    </includes>
                    <argLine>-Xmx256m</argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit4</artifactId>
                        <version>2.7</version>
                    </dependency>
                </dependencies>
            </plugin>
</plugins>
</pluginManagement>
</build>

反应堆:
是指所有模块组成的一个构建结果,它包含了各个模块之间的继承与依赖关系,从而能够够自动计算出合理的模块构建顺序。
裁剪反应堆:
mvn deploy -pl common,service/loan/api -am -Denforcer.skip=true -Dmaven.test.skip=true

-pl  构建指定的模块模块之间用逗号分隔
-am 同时构建所列出的模块的依赖模块
-amd 同时构建依赖于所列模块的模块
-rf 从指定的模块开始构建反应堆
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值