首页 > 代码库 > Maven--继承

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:包括项目的报告输出目录配置、报告插件配置等

Maven--继承