例如:
<parent>
<groupId>mycompany.trade.com</groupId>
<artifactId>mycompany.trade.</artifactId>
<version>1.1.1.0-SNAPSHOT</version>
</parent>
这是否意味着Maven会搜索父pom?如果是,在哪里,按什么顺序?可能在文件夹上一级吗?还是在本地存储库或存储库中?
例如:
<parent>
<groupId>mycompany.trade.com</groupId>
<artifactId>mycompany.trade.</artifactId>
<version>1.1.1.0-SNAPSHOT</version>
</parent>
这是否意味着Maven会搜索父pom?如果是,在哪里,按什么顺序?可能在文件夹上一级吗?还是在本地存储库或存储库中?
是的,maven 从本地存储库(或像nexus之类的代理)读取父 POM,并通过合并来自父 POM 和模块 POM 的信息来创建“有效 POM”。
另请参阅POM 简介
使用父级的一个原因是您有一个中心位置来存储有关应该在所有模块中使用的工件版本、编译器设置等信息。
常见的依赖、属性、常量等可以在中心父项目 pom.xml 中定义
最重要的是父项目无法分发,它看起来与常规的“pom.xml”非常相似,除了它还有一个打包标签
<groupId>com.company.demo</groupId>
<artifactId>MavenInheritance</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
孩子现在可以继承这个使用
<parent>
<groupId>com.company.demo</groupId>
<artifactId>MavenInheritance</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
顾名思义,我们可以为文件指出一个parent pom.xml
文件current pom.xml
。这样做,在父 pom.xml 文件中定义的依赖项、属性、常量和更多内容也会与当前的 pom.xml(子 pom.xml)文件合并。假设您的项目 pom.xml 中有一个父标签,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
然后 maven 从您的本地存储库(或从您配置的存储库管理器,如 , 等)读取该父 POM,sonatype
并jfrog
通过Resultant POM
组合父 POM 和您的模块的 POM 创建一个。
To see the combined result use the following mvn
command:
mvn help:effective-pom