关于Maven parent.relativePath说明

 更新时间:2024年09月27日 09:18:16   作者:小时候的阳光  
Maven中的relativePath用于指定父项目pom.xml的相对路径,默认值为../pom.xml,这个配置帮助Maven在构建时定位父模块的位置,确保模块间的依赖关系正确,relativePath可以指向本地或远程仓库中的父项目,如果不需要寻找父项目,可以将其设置为空

Maven parent.relativePath说明

关于Maven非常基础的问题

Maven parent.relativePath 的意思,很多人网上搜索 类似下面pom.xml中的问题 ,文件中的

<relativePath /> <!-- lookup parent from repository  --> 

是什么意思?

    <parent>
        <groupId>com.middol</groupId>
        <artifactId>webbase-dependency-management</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

网上大多数回到如下:

  • 设定一个空值将始终从仓库中获取,不从本地路径获取,如<relativePath />
  • Maven parent.relativePath
  • 默认值为../pom.xml
  • 查找顺序:relativePath元素中的地址–本地仓库–远程仓库

部分 Java 菜鸟或是一部分老鸟竟然也懵

答案第一行 :

设定一个空值将始终从仓库中获取,不从本地路径获取,如<relativePath />  

然后又开始问 : 仓库 是哪一个仓库 !?

我就纳闷了搜什么百度,自己测试一下不就好了吗,另外直接点击进去看原生说明啊,下面是 xml 原生英文解释:

      <xs:element name="relativePath" minOccurs="0" type="xs:string" default="../pom.xml">
        <xs:annotation>
          <xs:documentation source="version">4.0.0</xs:documentation>
          <xs:documentation source="description">
            The relative path of the parent &lt;code&gt;pom.xml&lt;/code&gt; file within the check out.
            The default value is &lt;code&gt;../pom.xml&lt;/code&gt;.
            Maven looks for the parent pom first in the reactor of currently building projects, then in this location on
            the filesystem, then the local repository, and lastly in the remote repo.
            &lt;code&gt;relativePath&lt;/code&gt; allows you to select a different location,
            for example when your structure is flat, or deeper without an intermediate parent pom.
            However, the group ID, artifact ID and version are still required,
            and must match the file in the location given or it will revert to the repository for the POM.
            This feature is only for enhancing the development in a local checkout of that project.
          </xs:documentation>
        </xs:annotation>
      </xs:element>

读一读英文,不行字典翻译翻译,然后自己做下实验 得出如下结论:

  1. relativePath 是Maven为了寻找父模块pom.xml所额外增加的一个寻找路径
  2. relativePath 默认值为 …/pom.xml

Maven寻找父模块pom.xml的顺序

如下:

(1)  first in the reactor of currently building projects

这里一个maven概念 反应堆(reactor ),意思就是先从工程里面有依赖相关的模块中找你引入的parent 的pom.xml,

(2) then in this location on the filesystem

然后从 你定义的  <relativePath > 路径中找,当然你如果只是 / 即空值,则跳过该步骤,默认值 ../pom.xml 则是从上级目录中找啦。

(3)  then the local repository

这个就不说了,如果 (1) (2) 步骤没有则从 本地仓库找啦。

(4) and lastly in the remote repo

这个还用说吗,上面都找不到了,最后只能从远程仓库找啦,再找不到就报错给你看 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring BeanFactory和FactoryBean有哪些区别

    Spring BeanFactory和FactoryBean有哪些区别

    这篇文章主要介绍了Spring BeanFactory 与 FactoryBean 的区别详情,BeanFactory 和 FactoryBean 的区别却是一个很重要的知识点,在本文中将结合源码进行分析讲解,需要的小伙伴可以参考一下
    2023-02-02
  • Java与Scala创建List与Map的实现方式

    Java与Scala创建List与Map的实现方式

    这篇文章主要介绍了Java与Scala创建List与Map的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java Condition类案例详解

    Java Condition类案例详解

    这篇文章主要介绍了Java Condition类案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 浅谈Java中BIO、NIO和AIO的区别和应用场景

    浅谈Java中BIO、NIO和AIO的区别和应用场景

    这篇文章主要介绍了Java中BIO、NIO和AIO的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • springboot应用中静态资源访问与接口请求冲突问题解决

    springboot应用中静态资源访问与接口请求冲突问题解决

    这篇文章主要介绍了springboot应用中静态资源访问与接口请求冲突,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 使用RestTemplate调用RESTful API的代码示例

    使用RestTemplate调用RESTful API的代码示例

    在开发 Web 应用程序时,调用 RESTful API 是一个常见的任务,本文将介绍如何使用 RestTemplate 调用 RESTful API,并提供示例代码,感兴趣的同学可以跟着小编一起来看看
    2023-06-06
  • idea中引入了gb2312编码的文件的解决方法

    idea中引入了gb2312编码的文件的解决方法

    这篇文章主要介绍了idea中引入了gb2312编码的文件的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 微信小程序获取手机号,后端JAVA解密流程代码

    微信小程序获取手机号,后端JAVA解密流程代码

    这篇文章主要介绍了微信小程序获取手机号,后端JAVA解密流程的代码,帮助大家更好的利用Java开发,感兴趣的朋友可以了解下
    2020-09-09
  • 使用spring注入枚举类型作为参数

    使用spring注入枚举类型作为参数

    这篇文章主要介绍了使用spring注入枚举类型作为参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringBoot使用Quartz无法注入Bean的问题及解决

    SpringBoot使用Quartz无法注入Bean的问题及解决

    这篇文章主要介绍了SpringBoot使用Quartz无法注入Bean的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论