zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    关于API微服务网关
    适用于企业的API管理平台
    简单的api测试
    Json,2020年api数据格式的Top 1
    API文档之团队协作
    如何进行API测试以提高程序质量
    API接口也要监控?
    春招实习_腾讯 wxg 一面 3.27 15:00
    春招实习_腾讯一面 & 二面_3.13
    春招实习_阿里一面
  • 原文地址:https://www.cnblogs.com/404code/p/10186645.html
Copyright © 2011-2022 走看看