IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Maven 3.8.x 版本遇到的一个坑 -> 正文阅读

[Java知识库]Maven 3.8.x 版本遇到的一个坑

maven 3.8.1 版本之后,在 settings.xml 中通过配置 mirror 禁用了不安全的 http 链接,默认情况下必须使用 https 的仓库地址。

想要使用 http 方式,需要禁用 settings.xml 中的如下配置:

<mirror>
  <id>maven-default-http-blocker</id>
  <mirrorOf>external:http:*</mirrorOf>
  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  <url>http://0.0.0.0/</url>
  <blocked>true</blocked>
</mirror>

为了方便Maven自动读取用户配置,我通常会把默认的 settings.xml 配置文件复制到用户目录的 .m2 下面,为了使用 http 仓库,把用户目录下的配置修改后,发现 IDEA 中可以用了。

后来使用 maven 的 docker 镜像时,按照官方文档配置 settings.xml 后发现无论如何都没用,后来在本地通过 -s settings.xml 指定配置文件时,发现也是无效。最后想着把 apache-maven-3.8.4\conf\settings.xml 修改了再试试,结果就可以了。

上面各种配置时,一直没有动 apache-maven-3.8.4\conf\settings.xml 这个配置文件,改了这里才好,因此猜测 Maven 对 settings.xml 配置文件的处理策略肯定是合并,搜索资料没找到官方的,找到了以下资料

A settings.xml file is usually found in a couple of places:

  • Global settings in Mavens home directory: ${maven.home}/conf/settings.xml
  • User settings in the user’s home: ${user.home}/.m2/settings.xml

If both files exist, their contents are merged. Configurations from the user settings take precedence.

可以看到是两个配置合并,用户配置优先。

当通过 -s 指定配置文件时,指定的这个会作为用户配置,可以通过下面命令查看当前使用的哪个配置文件:

mvn -s settings.xml -X clean | findstr settings
[DEBUG] Imported: org.apache.maven.settings < plexus.core
[DEBUG] Reading global settings from D:\Program Files\apache-maven-3.8.4\conf\settings.xml
[DEBUG] Reading user settings from D:\GitLab\tmp\settings.xml

在 Docker 镜像中执行命令时,输出如下:

root@e267c541e6e3:~/tmp# mvn -X clean | grep setting
[DEBUG] Imported: org.apache.maven.settings < plexus.core
[DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml
[DEBUG] Reading user settings from /root/.m2/settings.xml

了解这两层配置的位置和用途后,以后在遇到配置不起作用时就有法解决了。

但是,为什么 IDEA 中改了本地配置就能用了呢?

打开 IDEA 的 Maven 配置,如下图:
在这里插入图片描述
这里的 User settings file 就是一开始配置改对的,和直接在命令行运行 mvn 不同的时,这里用的 IDEA 内置的 Maven。在 IDEA 中执行相同的命令输出如下:

[DEBUG] Reading global settings from D:\Program Files\ideaIU-2021.2.2.win\plugins\maven\lib\maven3\conf\settings.xml
[DEBUG] Reading user settings from C:\Users\Administrator.m2\settings.xml

查看内置的配置文件后,里面没有禁用 http 的配置,所以两个配置文件合并后是可以使用 http 镜像库的。

使用 Maven 的 Docker 镜像时,必须修改 /usr/share/maven/conf/settings.xml 才可以。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:00:25  更:2021-12-26 22:03:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:54:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码