Maven – 父子 POM 示例

Maven 父 POM(或超级 POM)用于构建项目,以避免使用pom 文件之间的继承产生冗余或重复配置。它有助于长期轻松维护。

如果在父 POM 和子 POM 中配置了具有不同值的任何依赖项或属性,则子 POM 值将具有优先权。
目录

Parent POM 内容
Parent POM 和 Child POM 
Parent POM 相对路径
Demo

父 POM 内容

可以使用包装声明父 POM pom。它并不打算分发,因为它仅从其他项目中引用。

Maven 父 pom 可以包含几乎所有内容,并且可以继承到子 pom 文件中,例如

  • 通用数据——开发者姓名、单片机地址、分销管理等。
  • 常量——例如版本号
  • 共同的依赖关系——所有孩子共同的。它与在单独的 pom 文件中多次写入它们具有相同的效果。
  • 属性——例如插件、声明、执行和 ID。
  • 配置
  • 资源

父 POM 和子 POM 示例

为了匹配父 POM,Maven 使用两个规则:

  1. 在项目的根目录或给定的相对路径中有一个 pom 文件。
  2. 来自子 POM 文件的参考包含与父 POM 文件中所述相同的坐标。

父 POM

这里父POM已经为JUnit和spring框架配置了基本的项目信息和两个依赖。

<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.howtodoinjava.demo</groupId>
  <artifactId>MavenExamples</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
 
  <name>MavenExamples Parent</name>
  <url>http://maven.apache.org</url>
 
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>3.8.1</junit.version>
    <spring.version>4.3.5.RELEASE</spring.version>
  </properties>
 
  <dependencies>
   
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
     
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
     
  </dependencies>
</project>

子 POM

现在子 POM 需要使用parent标签和指定groupId/artifactId/version属性来引用父 POM。这个 pom 文件将从父 POM 继承所有属性和依赖项,并且还可以包含额外的子项目特定依赖项。

<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/maven-v4_0_0.xsd">
 
  <!--The identifier of the parent POM-->
  <parent>
    <groupId>com.howtodoinjava.demo</groupId>
    <artifactId>MavenExamples</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
 
  <modelVersion>4.0.0</modelVersion>
  <artifactId>MavenExamples</artifactId>
  <name>MavenExamples Child POM</name>
  <packaging>jar</packaging>
 
  <dependencies>   
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-security</artifactId>
      <version>${spring.version}</version>
    </dependency>
  </dependencies>
 
</project>

父 POM 相对路径

默认情况下,Maven 首先在项目的根目录中查找父 POM,然后是本地存储库,最后是远程存储库。如果父 POM 文件不位于任何其他位置,则可以使用代码标记。此相对路径应相对于项目 root

相对路径,如果没有明确给出,默认为..,即当前项目的父目录下的 pom。
<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/maven-v4_0_0.xsd">
 
  <!--The identifier of the parent POM-->
  <parent>
    <groupId>com.howtodoinjava.demo</groupId>
    <artifactId>MavenExamples</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../baseapp/pom.xml</relativePath>
  </parent>
 
  <modelVersion>4.0.0</modelVersion>
  <artifactId>MavenExamples</artifactId>
  <name>MavenExamples Child POM</name>
  <packaging>jar</packaging>
 
</project>

演示

让我们学习创建具有父子关系的 maven 项目。

1)创建Maven父项目

项目创建向导。

 

创建 Maven 项目向导

选择项目架构类型。

Maven 快速入门 Archtype

填写详细信息并创建项目。

创建 Maven 父项目

现在将包装从 jar 更改为 pom in pom.xml

<packaging>jar</packaging> //previous
 
<packaging>pom</packaging> //New

此外,添加项目属性和依赖项。

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <junit.version>3.8.1</junit.version>
  <spring.version>4.2.3.RELEASE</spring.version>
</properties>
 
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
  </dependency>
</dependencies>

2) 创建 Maven 子项目

就像您为父项目所做的那样,创建一个新的 Maven 项目。更改项目的具体细节,如名称等。

创建 Maven 子项目

pom.xml现在使用父引用更新子项目的文件。

<!--The identifier of the parent POM -->
<parent>
  <groupId>com.howtodoinjava.demo</groupId>
  <artifactId>MavenExamples</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</parent>

现在您可以自由使用父 pom 的元素,例如属性。您的子项目继承了父项目。要对此进行测试,只需从子项目的pom.xml.

现在检查它在 Java Build Path 中的库。您将在那里看到所有父级的依赖项。

子项目的Java构建路径

在评论部分给我你的问题。

快乐学习!!

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值