• 关于maven读取settings.xml文件的优先级问题


    今天在IDEA中配置maven的setting.xml文件路径指向的.m2路径下的setting_a.xml文件,同时,我的maven3.6.3也放在.m2中。

    [1] .m2文件夹

    [2] apache-maven-3.6.3文件夹

    然后,在IDEA中打包发布时发现,无论如何都读取不到指定的setting_a.xml文件。这个IDEA内指向的settings_a.xml不生效,依赖无法上传到指定仓库中。

    这个应该是maven加载setting.xml文件优先级的问题了,去maven官网看了下,有详细介绍。

    [3] 官网关于读取setting.xml文件优先级

    maven官网关于maven加载setting.xml文件优先级的介绍:

    翻译:

    快速概览

    文件中的元素包含使用的元素 定义以各种方式配置 Maven 执行的值,例如 ,但不应捆绑到任何特定项目,或者 分发给观众。这些值包括 local 存储库位置、备用远程存储库服务器和 身份验证信息。settingssettings.xmlpom.xml

    文件可能位于两个位置:settings.xml

    • Maven 安装:${maven.home}/conf/settings.xml

    • 用户的安装:${user.home}/.m2/settings.xml

    前者也称为全局设置,后者称为用户设置。如果这两个文件都存在, 它们的内容被合并,用户特定的是 主导。settings.xmlsettings.xmlsettings.xml

    提示:如果您需要从头开始创建特定于用户的设置,则 最简单的方法是将全局设置从 Maven 安装复制到目录。Maven 的默认值是 带有注释和示例的模板,以便您可以快速调整它以匹配 您的需求。${user.home}/.m2settings.xml

    以下是以下主要元素的概述:settings

      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
     
     
     
     
     
     
     
     
     

    可以使用 以下表达式:settings.xml

    1. ${user.home}和所有其他系统属性(从 Maven 3.0 开始)

    2. ${env.HOME}等用于环境变量

    请注意,在配置文件中定义的属性不能用于插值。settings.xml

    它的大概意思是:

    settings.xml可能存在两个文件夹:

    1.  Maven安装目录:${M2_HOME}/conf/settings.xml

    2.  用户的.m2目录:${user.home}/.m2/settings.xml

    1是全局配置,2是用户配置。如果两者都存在,它们的内容将被合并,并且用户目录的settings.xml优先。

    加载setting.xml的优先级如下:

    1. ${user.home}/.m2 目录下读取 settings.xml

    2. ${user.home}/.m2目录下不存在settings.xml时,从{M2_HOME}/conf 目录下读取

    3. idea界面里开发手动指定的settings.xml

    [4] 解决读取指定setting.xml失败的解决方式

    方式1:将.m2内的setting_a.xml文件名修改为settings.xml的文件,发布jar包成功(但是IDEA中继续使用.m2/setting_a.xml这个路径配置不生效的,文件找不到)。

    方式2:将.m2内的setting_a.xml文件名不动,直接去删掉maven3.6.3的conf目录内的setting.xml文件,发布成功。

    方式3:删除.m2内的setting_a.xml文件,将该文件修改为settings.xml放入maven3.6.3的conf目录内,虽然也能发布jar成功,但是IDEA中配置的.m2/setting_a.xml这个路径配置不生效的,使用的是系统变量内的setting.xml文件。

    所以,暴力点,直接删除.m2内的setting文件,环境和IDEA工具均统一去使用maven3.6.3的conf目录下setting配置。

    Done

  • 相关阅读:
    【完美实现】VITE + VUE3 + SVG图片解析+element-plus开发环境初始化(基于macos)
    HTML5新增的客户端校验
    铸坯火焰自动切割系统的设计状况及存在的问题
    吃透Chisel语言.27.Chisel进阶之有限状态机(一)——基本有限状态机(Moore机)
    《机器人学导论》——探究未来世界的奇妙之旅
    HTML+CSS大作业:使用html设计一个简单好看的公司官网首页 浮动布局
    R语言中的函数27:polynom::polynomial(), deriv(),integral(),solve()多式处理函数
    想转行学软件测试担心哪些问题?
    Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]
    基于VectorGrid加载GeoServer发布的矢量瓦片实例
  • 原文地址:https://blog.csdn.net/qq_27706119/article/details/134341999