• Maven--继承


     T-aggregator/pom.xml 

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4 
     5   <groupId>org.wzh.maven</groupId>
     6   <artifactId>T-aggregator</artifactId>
     7   <version>0.0.1-SNAPSHOT</version>
     8   <packaging>pom</packaging>
     9   <name>T-aggregator</name>
    10   <modules>
    11       <module>T-A</module>
    12       <module>T-B</module>
    13       <modele>T-parent</modules>
    14   </modules>
    15 
    16 </project>

     T-paraent/pom.xml 

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3 
     4     <modelVersion>4.0.0</modelVersion>
     5     <groupId>org.wzh.maven</groupId>
     6     <artifactId>T-parent</artifactId>
     7     <version>0.0.1-SNAPSHOT</version>
     8     <packaging>pom</packaging>
     9     <name>T-Parent</name>
    10 
    11 </project>

     T-A/pom.xml 

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4   
     5   <parent>
     6       <groupId>org.wzh.maven</groupId>
     7       <artifactId>T-parent</artifactId>
     8       <version>0.0.2-SNAPSHOT</version>
     9       <relativePath>../T-parent/pom.xml</relativePath>
    10   </parent>
    11 
    12   <artifactId>T-A</artifactId>
    13   <name>T-A</name>
    14 
    15   <properties>
    16     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    17   </properties>
    18 
    19   <dependencies>
    20     <dependency>
    21       <groupId>junit</groupId>
    22       <artifactId>junit</artifactId>
    23       <version>3.8.1</version>
    24       <scope>test</scope>
    25     </dependency>
    26   </dependencies>
    27 </project>

     T-B/pom.xml 

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4 
     5   <groupId>org.wzh.maven</groupId>
     6   <artifactId>T-B</artifactId>
     7   <version>0.0.1-SNAPSHOT</version>
     8   <packaging>jar</packaging>
     9   <name>T-B</name>
    10 
    11   <properties>
    12     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    13   </properties>
    14 
    15   <dependencies>
    16     <dependency>
    17       <groupId>junit</groupId>
    18       <artifactId>junit</artifactId>
    19       <version>3.8.1</version>
    20       <scope>test</scope>
    21     </dependency>
    22   </dependencies>
    23 </project>

    由此可知,T-A 确实继承了 T-paraent 的 POM。

    需要特别注意的是,父 POM 的  <packaging> 必须为 pom。

    由于父模块只是为了帮助消除配置的重复,因此它本身不包含除 POM 之外的项目文件,也就不需要 src/main/java/ 之类的文件夹了。

    其他模块如果需要继承父模块,则需要在 POM 中声明父模块。

     <paraent> 下的子元素  <groupId> 、 <artifactId> 和  <version> 指定了父模块的坐标,这三个元素是必须的。

     <relativePath> 表示父 POM 的位置。默认值是 ../pom.xml。也就是说,Maven 默认父 POM 在上一层目录下。

    对于  <artifactId> ,子模块应该显式声明。

    POM 可被继承的元素:

    • groupId:项目组 ID,项目坐标的核心元素
    • version:项目版本,项目坐标的核心元素
    • description:项目的描述信息
    • organization:项目的组织信息
    • inceptionYear:项目的创始年份
    • url:项目的 URL 地址
    • developers:项目的开发者信息
    • contributors:项目的贡献者信息
    • distributionManagement:项目的部署配置
    • issueManagement:项目的缺陷跟踪系统信息
    • ciManagement:项目的持续集成系统信息
    • scm:项目的版本控制系统信息
    • mailingLists:项目的邮件列表信息
    • properties:自定义的 Maven 属性
    • dependencies:项目的依赖配置
    • dependencyManagement:项目的依赖管理配置
    • repositories:项目的仓库配置
    • build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
    • reporting:包括项目的报告输出目录配置、报告插件配置等
  • 相关阅读:
    register based 和 stack based虚拟机的区别
    Java in a Nutshell学习笔记
    Java中interface和abstract class的区别和联系
    Java中final的作用
    Android 源码下载
    Android Fragment 你应该知道的一切
    Android Fragment 真正的完全解析(下)
    Android Fragment 真正的完全解析(上)
    IntelliJ IDEA 使用总结
    Linux在目录中查找某个函数
  • 原文地址:https://www.cnblogs.com/microcat/p/7240010.html
Copyright © 2020-2023  润新知