Maven的生命周期以及依赖、聚合、继承

1、三套生命周期(相互独立)

  clean 清理项目

     pre-clean 执行清理前的工作

      clean清理上一次构建生成的所有文件

      post-clean 执行一些清理后需要完成的工作

  default 构建项目

     compile test package install

  sit 生成项目站点

  pre-site 在生成项目站点前要完成的工作

  site 生成项目站点文档

  post-site 在生成项目站点后要完成的工作

  site-deploy 发布生成的站点到服务器上

2、自定义绑定插件

       在<project>子节点下插入

<build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
              <version>2.4</version>
              <executions>
                  <execution>
                      <phase>package</phase>
                      <goals>
                          <goal>jar-no-fork</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>

3、依赖的传递性以及排除依赖

  1、在<dependencies>下添加自定义依赖

<dependency>
    <groupId>com.hongxing</groupId>
    <artifactId>hongxing-nange</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- 排除依赖传递列表这里只依赖父不依赖爷爷 -->
    <exclusions>
        <exclusion>
            <groupId>com.hongxing</groupId>
            <artifactId>hongxing-bge</artifactId>
        </exclusion>
    </exclusions>
</dependency> 

  2、依赖冲突

    1、依赖传递时短路优先

    2、依赖传递时先声明先优先

    如果路径长度相同,则谁先声明,先解析谁

    3、直接引用依赖后面声明的会把前面的覆盖掉

    短路优先的优先级别要高于先声明下优先的级别

5、Maven的聚合和继承

  1、继承junit

    先定义一个父类并在pom中把打包方式设置为pom,并在dependencyManagement中引入依赖,用类似EL表达式,然后在properties中声明

    

<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.hongxing</groupId>
    <artifactId>hongxing-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>hongxing-parent</name>
    <url>http://maven.apache.org</url>
    <properties>
        <junit.version>3.8.1</junit.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

子类需要继承父类的依赖的时候在子类pom中加入下列code

    <parent>
        <groupId>com.hongxing</groupId>
        <artifactId>hongxing-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

  2、聚合多个项目;

    将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进行 clean 操作。而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作

    首先将打包方式更改为pom,然后pom.xml文件中添加被聚合的项目,最后打包部署

<modules>
      <module>../hongxing-bge</module>
      <module>../hongxing-nange</module>
      <module>../hongxing-shanji</module>
  </modules>

 

      聚合和继承都需要打包package部署到本地库install

posted @ 2018-12-27 18:41  杜小二  阅读(443)  评论(0编辑  收藏  举报