当前位置: 首页 > news >正文

关于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

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository/><interactiveMode/><offline/><pluginGroups/><servers/><mirrors/><proxies/><profiles/><activeProfiles/>
</settings>

可以使用 以下表达式: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

http://www.lryc.cn/news/225286.html

相关文章:

  • 城市内涝积水监测,万宾科技内涝预警监测系统
  • JavaEE初阶学习:Linux 基本使用和 web 程序部署
  • 摔杯算法(要求用最少的测试次数找出恰巧会使杯子破碎的楼层。)
  • centos7安装docker容器
  • 【二叉树】如何构建一个包含大量随机数节点的二叉树测试用例
  • 防火防盗防小人 使用 Jasypt 库来加密配置文件
  • Spring Cloud学习(二)【Eureka注册中心】
  • 数据分析实战 | 线性回归——女性身高与体重数据分析
  • python回文日期 并输出下一个ABABBABA型回文日期
  • Zotero拓展功能之Zotero Style
  • 小程序提交表单之后,清除表单form
  • Java程序设计实验5 | Java API应用
  • 自媒体项目详述
  • 客服呼叫中心的语音质检工作
  • 深度解密 | 灵脉SAST 3.0最新特性曝光
  • NowCode JZ39 数组中出现次数超过一半的数字 简单
  • 【SA8295P 源码分析 (一)】119 - QNX 中如何在代码中快速配置 TLMM_GPIO 或 PMIC_GPIO 中断 及 中断回调函数
  • 电大搜题:开启智能学习新时代
  • 19、Flink 的Table API 和 SQL 中的自定义函数及示例(4)
  • Vue23-props配置功能
  • 怎样使用ovsyunlive在web网页上直接播放rtsp/rtmp视频
  • MySQL | 查询接口性能调优、编码方式不一致导致索引失效
  • ASUS华硕灵耀X2 Duo UX481FA(FL,FZ)_UX4000F工厂模式原装出厂Windows10系统
  • 企业安全—三保一评
  • “深入理解机器学习性能评估指标:TP、TN、FP、FN、精确率、召回率、准确率、F1-score和mAP”
  • Linux软件包(源码包和二进制包)
  • Leetcode-394 字符串解码(不会,复习)
  • 如何在Linux上搭建本地Docker Registry并实现远程连接
  • assets_common.min.js
  • 前端工程化(vue2)