• (五)Maven中的聚合和继承


    一、为什么要聚合?

    • 定义:我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可以独立的编译和测试运行每个模块,但是随着项目的不断变大和复杂化,我们期望能够使用简单的操作来完成编译等工作,这时Maven给出了聚合的配置方式。所谓聚合,顾名思义,就是把多个模块或项目聚合到一起,我们可以建立一个专门负责聚合工作的Maven project ---  aggregator。
    • 注意:
      •     aggregator本身也做为一个Maven项目,它必须有自己的POM它的打包方式必须为: pom
      •      它的打包方式必须为: pom
      •     引入了新的元素:modules---module,每个module的值都是一个当前POM的相对目录
      •     聚合模块的内容仅仅是一个pom.xml文件,它不包含src/main/Java、src/test/java等目录,因为它只是用来帮助其它模块构建的工具,本身并没有实质的内容。

     

    • 案例:

    结果:

     二、继承

    • 为什么要继承?

      •   我们在项目开发的过程中,可能多个模块独立开发,但是多个模块可能依赖相同的元素,比如说每个模块都需要Junit,使用spring的时候,其核心jar也必须都被引入,在编译的时候,maven-compiler-plugin插件也要被引入。继承是解决包冲突的解决方法之一。
    •  如何配置:

      •   <packaging>: 作为父模块的POM,其打包类型也必须为POM
      •    结构:父模块只是为了帮助我们消除重复,所以它也不需要src/main/java、src/test/java等目录
      •        新的元素:<parent> , 它是被用在子模块中的
      •    子模块省略groupId和version: 使用了继承的子模块中可以不声明groupId和version, 子模块将隐式的继承父模块的这两个元素
    • 案例:

    • maven_parent/pom.xml:
    <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.shyroke</groupId>
      <artifactId>maven_parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
    
      <name>maven_parent</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
     <!-- 定义公用的依赖包,不负责具体的jar包引用,jar包的引用在子工程中实现 -->
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
             </dependency>
         </dependencies>
     </dependencyManagement>
     
     
    </project>
    • maven05/pom.xml:
    <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>
    
    <parent>
          <groupId>com.shyroke</groupId>
          <artifactId>maven_parent</artifactId>
          <version>0.0.1-SNAPSHOT</version>
    </parent>
    
        <artifactId>maven05</artifactId>
        <!-- 如果版本号与maven_parent父工程一致的话可以省略,因为子工程会继承父工程的groupId和version -->
        <version>2.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>maven05</name>
        <url>http://maven.apache.org</url>
    
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
    
    
        <dependencies>
    
    
         <dependency>
         <!-- 父工程中已经定义了junit的版本,所以这里就不需要定义版本了 -->
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <scope>test</scope>
        </dependency>
    
        </dependencies>
    </project>

    结果:

  • 相关阅读:
    async await异步方法的理解
    前端读取excel
    js如何实现上拉加载更多
    浅谈控制反转与依赖注入
    Java实现二叉树和遍历
    Linux生产故障排查
    排序算法之快速排序
    排序算法之堆排序
    树和二叉树知识整理
    常用的数据结构简单整理
  • 原文地址:https://www.cnblogs.com/shyroke/p/7324312.html
Copyright © 2020-2023  润新知