Maven 详细配置:Maven settings 配置文件的详细说明
Maven settings 配置文件是 Maven 环境的重要组成部分,它用于定义用户特定的配置信息和全局设置,例如本地仓库路径、远程仓库镜像、代理服务器以及认证信息等。settings 文件分为全局配置文件(settings.xml)和用户配置文件(用户目录下的 .m2/settings.xml),它们分别影响 Maven 的全局行为和当前用户的个性化配置。通过合理配置 settings 文件,开发者可以优化构建性能、提升依赖解析效率,并满足企业开发环境中的特殊需求。本篇内容将深入解析 settings 文件的结构和使用方法,帮助读者灵活定制 Maven 环境,提升项目开发效率和稳定性。
文章目录
- 1、关于 Settings 配置文件
- 2、Settings 顶级元素的详细介绍
- 2.1、简单值元素
- 2.2、插件组元素
- 2.3、服务器配置元素
- 2.4、镜像仓库元素
- 2.5、代理元素
- 2.6、构建配置元素
- 2.7、激活的构建配置元素
1、关于 Settings 配置文件
在 Maven 官网,关于 Settings 配置文件说明:https://maven.apache.org/settings.html
在 settings.xml 文件中的 settings 元素包含了一些用于定义配置 Maven 执行方式的值,类似于 pom.xml,但这些配置不应绑定到任何特定项目,也不应该分发给其他用户。这些配置包括本地仓库的位置、备用的远程仓库服务器以及认证信息等。
settings.xml 文件可以存在的两个位置:
- Maven 安装目录:
${maven.home}/conf/settings.xml - 用户目录:
${user.home}/.m2/settings.xml
第一个位置的 settings.xml 称为全局设置(Global Settings),第二个位置的 settings.xml 称为用户设置(User Settings)。如果两个文件同时存在,它们的内容会被合并,其中用户设置优先级更高。
2、Settings 顶级元素的详细介绍
下面是一份位于 POM 文件中 <settings> 元素下的元素列表(截图自官网):

2.1、简单值元素
对于 Maven 的 Settings 文件来说,一半的顶级元素(Root Element)都是简单值元素,这些简单值用于描述构建系统中一些始终处于活跃状态的配置项。
<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>${user.home}/.m2/repository</localRepository><interactiveMode>true</interactiveMode><usePluginRegistry>false</usePluginRegistry><offline>false</offline>...
</settings>
配置说明:
- 顶级元素
localRepository:本地仓库。该值表示构建系统本地仓库的路径。其默认值为${user.home}/.m2/repository。 - 顶级元素
interactiveMode:Maven 是否需要和用户交互以获得输入。如果 Maven 需要和用户交互以获得输入,则设置成true,反之则应为false。其默认值为true。 - 顶级元素
usePluginRegistry:Maven 是否需要使用(该元素在 Maven 3 中已被废弃)plugin-registry.xml文件来管理插件版本。如果设置为true,则在{user.home}/.m2下需要有一个plugin-registry.xml来对plugin的版本进行管理。默认为false。 - 顶级元素
offline:Maven 是否需要在离线模式下运行。如果构建系统需要在离线模式下运行,则为true,反之则应为false。当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。其默认值为false。
2.2、插件组元素
此元素包含一个 pluginGroup 元素的列表,每个 pluginGroup 元素包含一个 groupId。当在命令行中使用插件且未指定 groupId 时,Maven 会在这个列表中进行搜索。该列表默认已包含 org.apache.maven.plugins 和 org.codehaus.mojo。
<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">...<pluginGroups><pluginGroup>org.apache.maven.plugins</pluginGroup><pluginGroup>org.codehaus.mojo</pluginGroup></pluginGroups>...
</settings>
配置说明:
- 顶级元素
pluginGroups:当插件的组织 ID(groupId)没有显式提供时,供搜寻插件组织 ID(groupId)的列表。当我们使用某个插件,并且没有在命令行为其提供组织 ID(groupId)的时候,Maven 就会使用该列表。 - 一级子元素
pluginGroup:插件的组织 ID(groupId)。
2.3、服务器配置元素
在 Maven 中,用于下载和部署的仓库通过 POM 文件中的 <repositories> 和 <distributionManagement> 元素进行定义。然而,某些敏感信息(如用户名和密码)不应该随 pom.xml 一起分发。这类信息应保存在 settings.xml 中,例如在构建服务器上使用的配置。
以下是一个 servers 配置示例:
<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">...<servers><server><id>server001</id><username>my_login</username><password>my_password</password><privateKey>${user.home}/.ssh/id_dsa</privateKey><passphrase>some_passphrase</passphrase><filePermissions>664</filePermissions><directoryPermissions>775</directoryPermissions><configuration></configuration></server></servers>...
</settings>
配置说明:
- 顶级元素
servers:配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中 。 - 一级子元素
server:服务器元素,包含配置服务器时需要的信息。 - 二级子元素
id:服务器的 ID(注意不是用户登陆的 ID),该id与 POM 文件中distributionManagement/repository元素的id或 Settings 文件中mirrors/mirror元素的id相匹配。 - 二级子元素
username、password:鉴权用户名和鉴权密码,表示服务器认证所需要的登录名和密码。 - 二级子元素
privateKey、passphrase:鉴权时使用的私钥位置和私钥密码。和前两个元素类似,私钥位置和私钥密码指定了一个私钥的路径(默认是/home/hudson/.ssh/id_dsa)和可选的密钥短语。 - 二级子元素
filePermissions、directoryPermissions:部署过程中创建的文件或目录的权限设置。这两个元素合法的值是一个三位数字,其对应了 unix 文件系统的权限。 - 二级子元素
configuration:该元素用于定义服务器相关的其他配置(自定义配置,较少使用)。
PS(注意事项):① 从 Maven 2.1.0 开始,新增了服务器密码和密钥短语加密的功能,以增强安全性;② 如果使用私钥登录服务器,需要确保省略 password 元素,否则会导致私钥被忽略;③ 在需要同时访问多个远程仓库的项目中,通过 settings.xml 中的 <servers> 元素配置这些仓库的认证信息,避免将敏感信息暴露在 pom.xml 中。
2.4、镜像仓库元素
在 Maven 中,镜像仓库是一个远程仓库的映射仓库,通常用于加速依赖项的下载。
<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">...<mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>...
</settings>
配置说明:
- 顶级元素
mirrors:为仓库列表配置的下载镜像列表。 - 一级子元素
mirror:给定仓库的下载镜像。 - 二级子元素
id:该镜像的唯一标识符。用来区分不同的mirror元素。 - 二级子元素
name:镜像名称。 - 二级子元素
url:该镜像的 URL。构建系统会优先考虑使用该 URL,而非使用默认的服务器 URL。 - 二级子元素
id:被镜像的服务器的 ID。例如,如果我们要设置了一个 Maven 中央仓库(http://repo1.maven.org/maven2)的镜像,就需要将该元素设置成central。这必须和中央仓库的 ID -central完全一致。
2.5、代理元素
在 Maven 的 settings.xml 文件中,可以通过 proxies 元素配置代理服务器,用于在受限制的网络环境中访问外部仓库。
以下是一个 proxies 配置示例:
<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">...<proxies><proxy><id>myproxy</id><active>true</active><protocol>http</protocol><host>proxy.somewhere.com</host><port>8080</port><username>proxyuser</username><password>somepassword</password><nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts></proxy></proxies>...
</settings>
配置说明:
- 顶级元素
proxies:用来配置不同的代理的列表。 - 一级子元素
proxy:代理元素,包含配置代理时需要的信息。 - 二级子元素
id:代理的唯一标识符,用于区分不同的代理配置。 - 二级子元素
active:该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。 - 二级子元素
protocol:代理协议,例如http或https。 - 二级子元素
host、port:代理服务器的主机名或 IP 地址 和代理服务器的端口号。 - 二级子元素
username、password:代理认证所需的用户名和密码 - 二级子元素
nonProxyHosts:不需要通过代理访问的主机列表。该列表的分隔符由代理服务器指定,例子中使用了竖线分隔符,使用逗号分隔也很常见。
2.6、构建配置元素
在 settings.xml 文件中的 profile 元素是 pom.xml 文件中 profile 元素的简化版。它仅包含以下几个元素,因为这些元素关注的是整个构建系统的配置,而不是单个项目的设置。
这些元素包括:activation(激活)、repositories(仓库)、pluginRepositories(插件仓库)、properties(属性)。
<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">...<profiles><profile><id>test</id><activation><activeByDefault>false</activeByDefault><jdk>1.5</jdk><os><name>Windows XP</name><family>Windows</family><arch>x86</arch><version>5.1.2600</version></os><property><name>mavenVersion</name><value>2.0.3</value></property><file><exists>${basedir}/file2.properties</exists><missing>${basedir}/file1.properties</missing></file><properties/><repositories/><pluginRepositories/></activation></profile>><activeProfiles><activeProfile>dev</activeProfile></activeProfiles></profiles>...
</settings>
配置说明:
-
顶级元素
profiles:根据环境参数来调整构建配置的列表。 -
一级子元素
profile:根据环境参数来调整的构件的配置。 -
二级子元素
id:该配置的唯一标识符。 -
二级子元素
activation:自动触发 Profile 的条件逻辑。 -
三级子元素
activeByDefault:布尔标志,确定 Profile 是否默认处于活动状态。仅当没有其他配置文件通过命令行明确激活或通过其他激活器隐式激活时,才会评估此标志,否则无效。 -
三级子元素
jdk:当匹配的 JDK 被检测到,Profile 被激活。例如,1.4 激活 JDK1.4,1.4.0_2,而 !1.4激活所有版本不是以 1.4 开头的 JDK。. -
三级子元素
os:当匹配的操作系统属性被检测到,Profile 被激活。os 元素可以定义一些操作系统相关的属性 -
四级子元素
name:激活 Profile 的操作系统的名字。 -
四级子元素
family:激活 Profile 的操作系统所属家族,如Windows。 -
四级子元素
arch:激活 Profile 的操作系统体系结构。 -
四级子元素
version:激活 Profile 的操作系统版本。 -
三级子元素
property:如果 Maven 检测到某一个属性(其值可以在 POM 中通过${名称}引用),其拥有对应的名称和值,Profile 就会被激活。 -
四级子元素
name:激活 Profile 的属性的名称 -
四级子元素
value:激活 Profile 的属性的值 -
三级子元素
file:提供一个文件名,通过检测该文件的存在或不存在来激活 Profile。 -
四级子元素
exists:检查文件是否存在,如果存在则激活 Profile。 -
四级子元素
missing:检查文件是否存在,如果不存在则激活 Profile。 -
二级子元素
properties:同 POM 文件中的顶级元素properties。 -
二级子元素
repositories:同 POM 文件中的顶级元素repositories。 -
二级子元素
pluginRepositories:同 POM 文件中的顶级元素pluginRepositories。 -
二级子元素
activeProfiles:定义每个 Profile 内部是否有特定的 Profile 需要激活。这样可以在某些特定的构建配置中嵌套其它的激活配置。 -
三级子元素
activeProfile:被嵌套激活的 Profile 的 ID。
2.7、激活的构建配置元素
在 Maven 的 settings.xml 文件中,activeProfiles 元素用于指定在构建时要激活的 Maven 配置元素。它允许你在不同的构建环境中自动激活特定的 Profile,而不需要在命令行或 POM 文件中手动指定。
<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">...<activeProfiles><activeProfile>dev</activeProfile><activeProfile>prod</activeProfile></activeProfiles>...
</settings>
配置说明:
- 顶级元素
activeProfiles:包含一组activeProfile元素,用于声明激活的 Profile 列表。 - 一级子元素
activeProfile:每个activeProfile元素的值对应一个 Profile 的id。这个id必须与pom.xml或profile.xml中定义的 Profile 的id相匹配。
PS(注意事项):将 Profile 激活放在 settings.xml 中,可以确保在所有 Maven 构建中使用相同的 Profile,而不必在每个 POM 文件中显式指定。这对于需要一致性和统一配置的团队非常有用。
相关文章:
Maven 详细配置:Maven settings 配置文件的详细说明
Maven settings 配置文件是 Maven 环境的重要组成部分,它用于定义用户特定的配置信息和全局设置,例如本地仓库路径、远程仓库镜像、代理服务器以及认证信息等。settings 文件分为全局配置文件(settings.xml)和用户配置文件&#x…...
【文本分类】bert二分类
import os import torch from torch.utils.data import DataLoader, Dataset from transformers import BertTokenizer, BertForSequenceClassification, AdamW from sklearn.metrics import accuracy_score, classification_report from tqdm import tqdm# 自定义数据集 class…...
单例模式-如何保证全局唯一性?
以下是几种实现单例模式并保证全局唯一性的方法: 1. 饿汉式单例模式 class Singleton { private:// 私有构造函数,防止外部创建对象Singleton() {}// 静态成员变量,存储单例对象static Singleton instance; public:// 公有静态成员函数&…...
设计模式学习笔记——结构型模式
文章目录 适配器模式 Adapter适用场景UML 桥接模式 Bridge适用场景UML 组合模式 Composite装饰模式 Decorator外观模式 Facade享元模式 Flyweight代理模式 Proxy 适配器模式 Adapter 适用场景 希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用…...
WEB攻防-通用漏洞_文件上传_黑白盒审计流程
目录 前置知识点 Finecms-CMS文件上传 编辑 Cuppa-Cms文件上传 Metinfo-CMS 文件上传 前置知识点 思路: 黑盒就是寻找一切存在文件上传的功能应用 1 、个人用户中心是否存在文件上传功能 2 、后台管理系统是否存在文件上传功能 3 、字典目录扫描探针文件上传构…...
RabbitMQ基本介绍及简单上手
(一)什么是MQ MQ(message queue)本质上是队列,满足先入先出,只不过队列中存放的内容是消息而已,那什么是消息呢? 消息可以是字符串,json也可以是一些复杂对象 我们应用场…...
服务器证书不受信任是什么问题?
用户在访问某些网站时,可能会遇到“服务器证书不受信任”的警告。这一问题不仅影响用户的浏览体验,更可能对网站的信誉和安全性产生深远影响。那么服务器证书不受信任是什么问题呢? 服务器证书的基本概念 服务器证书是由证书颁发机构(CA)签…...
spring mvc源码学习笔记之十
前面的文章介绍了用 WebApplicationInitializer 或者 AbstractAnnotationConfigDispatcherServletInitializer 来代替 web.xml 。 我们学 java web 的时候就知道,servlet 容器会自动加载 web.xml。 那么,疑问就来了,WebApplicationInitialize…...
Ubuntu 下载安装 elasticsearch7.17.9
参考 https://blog.csdn.net/qq_26039331/article/details/115024218 https://blog.csdn.net/mengo1234/article/details/104989382 过程 来到 Es 的版本发布列表页面:https://www.elastic.co/downloads/past-releases#elasticsearch 根据自己的系统以及要安装的…...
Qt笔记:网络编程Tcp
一、铺垫 1.以下只是告诉诸位怎样去构建服务器与客户端;客户端这样构建肯定没问题;但是服务端不可能这样写,因为他是布置在Linux上的,纯数据类处理服务器,根本不可能用Qt写;这在Qt的http类中就表明了&…...
C++单例模式跨DLL调用问题梳理
问题案例: 假设有这样一个单例模式的代码 //test.h header class Test { public:static Test &instance() {static Test ins;return ins;}void foo(); };void testFoo();//test.cpp source #include "test.h"void Test::foo() {printf("%p\n&q…...
oracle闪回版本查询
闪回版本查询(Flashback Versions Query)是Oracle数据库提供的一种功能,允许用户查看某个表在特定时间范围内的所有版本。这对于审计和调试数据修改问题非常有用。通过闪回版本查询,你可以了解表中的数据在某个时间段内的变化历史…...
C#用winform窗口程序操作服务+不显示Form窗体,只显示右下角托盘图标+开机时自启动程序【附带项目地址】
服务的文章在:https://blog.csdn.net/weixin_43768573/article/details/144957941 一、用winform窗口程序操作服务 1、点击“创建新项目”,选择“Windows 服务(.NET Framework)” 2、给项目命名 3、右击项目->添加->新建项,选择“应用程序清单文件(仅限Windo…...
UOS系统和windows系统wps文档显示差异问题解决
最近在使用UOS系统的过程中,发现了一个很有意思的现象。就是在UOS系统上编辑的文档,发到windows系统上,会出现两个文档显示差异很大的情况,文档都是使用一样的wps软件打开的。到底是什么原因导致这种现象的呢?该如何解…...
JS中函数基础知识之查漏补缺(写给小白的学习笔记)
函数 函数是ECMAScript中 最有意思的部分之一, 主要是因为函数实际上是对象.-- 每个函数 都是Function类型的实例,Function也有属性和方法. 因为函数是对象,所以函数名就是指向函数对象的指针. 常用的定义函数的语法: ①函数声明 ②函数表达式 ③箭头函数 function sum (n…...
蓝桥杯训练
1对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。 例如,如下矩阵中 LANN QIAO有…...
前端学习DAY33(外边距的折叠)
垂直外边距的重叠 在网页中相邻的垂直方向的外边距,会发生外边距的重叠 兄弟元素 兄弟元素之间的相邻外边距会取(绝对值)最大值,而不是取和,谁大取谁 特殊情况:如果相邻的外边距一正一负,则取两…...
asp.net core mvc的 ViewBag , ViewData , Module ,TempData
在 ASP.NET MVC 和 ASP.NET Core MVC 中,ViewBag 和 ViewData 是两种用于将数据从控制器传递到视图(View)的常用方法。它们都允许控制器将动态数据传递给视图,但它们的实现方式有所不同。关于 Module,它通常指的是某种…...
Linux驱动学习之第二个驱动程序(LED点亮关闭驱动程序-分层设计思想,使其能适应不同的板子-驱动程序模块为多个源文件怎么写Makefile)
目录 看这篇博文前请先掌握下面这些博文中的知识需要的PDF资料完整源代码board_fire_imx6ull-pro.c中的代码leddrv.c中的代码ledtest.c中的代码 程序设计思想和文件结构实现分层思想的具体方法概述具体实现分析定义结构体led_operations用来集合各个单板硬件层面操作LED的函数定…...
手写@EnableTransactionalManagement
定义一个注解,用于标注于方法上,标志着此方法是一个事务方法。 Target({ElementType.METHOD,ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) public interface MyTransaction {}定义一个开启事务功能的注解 Component Import(TransActionBean…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
