Maven 父 POM(或超级 POM)用于构建项目,以避免使用pom 文件之间的继承产生冗余或重复配置。它有助于长期轻松维护。
目录
Parent POM 内容
Parent POM 和 Child POM
Parent POM 相对路径
Demo
父 POM 内容
可以使用包装声明父 POM pom
。它并不打算分发,因为它仅从其他项目中引用。
Maven 父 pom 可以包含几乎所有内容,并且可以继承到子 pom 文件中,例如
- 通用数据——开发者姓名、单片机地址、分销管理等。
- 常量——例如版本号
- 共同的依赖关系——所有孩子共同的。它与在单独的 pom 文件中多次写入它们具有相同的效果。
- 属性——例如插件、声明、执行和 ID。
- 配置
- 资源
父 POM 和子 POM 示例
为了匹配父 POM,Maven 使用两个规则:
- 在项目的根目录或给定的相对路径中有一个 pom 文件。
- 来自子 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构建路径
在评论部分给我你的问题。
快乐学习!!