Maven settings.xml 详解 您所在的位置:网站首页 maven指定settings文件命令 Maven settings.xml 详解

Maven settings.xml 详解

2023-03-30 04:25| 来源: 网络整理| 查看: 265

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

概述 作用

用来设置Maven参数的配置文件,在Maven中提供了一个settings.xml文件来定义Maven的全局配置信息。我们通过这个文件来定义本地仓库、远程仓库和联网使用的代理信息等配置。

文件位置

一般存在于两个位置:

全局配置:Maven的安装目录的conf子目录下面(${M2_HOME}/conf/settings.xml) 用户目录的的.m2子目录下面({user.home}/.m2/settings.xml)。当前用户的独享配置。

当我们使用一些工具时(IDEA),可以直接指定settings.xml文件的位置。

配置文件优先级

局部配置高于全局配置

配置优先级从高到低:pom.xml> user settings > global settings

如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。

Maven依赖搜索顺序

当我们执行Maven命令时,maven开始按照以下顺序查找依赖库:

步骤 1:在本地仓库搜索,如果找不到,执行步骤 2,找到了则执行其他操作 步骤 2:在中央仓库搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中引用。 步骤 3:如果远程仓库没有被设置, 将简单的停滞处理并抛出错误(无法找到依赖的文件)。 步骤 4:在一个或多个远程仓库中搜索依赖的文件, 如果找到则下载到本地仓库已被将来引用, 否则将停止处理并抛出错误(无法找到依赖的文件)。 元素详解 顶级元素 LocalRepository

作用:该值表示构建系统本地仓库的路径。

默认值:${user.home}/.m2/repository

${user.home}/.m2/repository 复制代码 InteractiveMode

作用:表示maven是否需要和用户交互以获得输入。

默认值:true

true 复制代码 offline

作用:表示maven是否需要在离线模式下运行。

默认值:false

当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。

false 复制代码 pluginGroups

作用:当插件的组织id(groupId)没有显式提供时,供搜寻插件groupId的列表。

默认值:默认情况下,maven会自动把org.apache.maven.plugins和org.codehaus.mojo添加到pluginGroups下。

com.your1.plugins com.your2.plugins 复制代码 proxies

作用:用来配置不同的代理, 多代理 profiles 可以应对笔记本或移动设备的工作环境: 通过简单的设置 profile id 就可以很容易的更换整个代理配置

optional true http proxyuser proxypass proxy.host.net 80 local.net|some.host.com 复制代码 servers

作用:进行远程服务器访问时所需的授权配置信息。通过系统唯一的 server id 进行唯一关联

注意:您应该指定用户名/密码或私钥/密码,因为这些配对是一起使用。

deploymentRepo repouser repopwd siteServer /path/to/private/key optional; leave empty if not used. 复制代码 mirrors

作用:用于替代指定远程仓库的镜像服务器配置,例如当您无法连接上国外的仓库是, 可以指定连接到国内的镜像服务器,同时还可以缓解镜像仓库的压力

注意:pom.xml 和 setting.xml 中配置的仓库和镜像优先级关系(``mirror优先级高于repository`)

repository(setting.xml) < repository(pom.xml) < mirror(setting.xml) 复制代码

mirror匹配顺序:

多个mirror按照id字母顺序进行排列,与编写顺序无关 在第一个mirror找不到artifact,不会继续找下一个镜像 只有当mirror无法链接的时候,才会尝试找下一个镜像,类似容灾备份 mirrorId repositoryId Human Readable Name for this Mirror. http://my.repository.com/repo/path aliyunmaven * 阿里云公共仓库 https://maven.aliyun.com/repository/public 复制代码

mirrorOf配置语法:

*:匹配所有远程仓库。相当于一个拦截器,它会拦截远程仓库的相关请求,把请求里的远程仓库地址,重定向到mirror里配置的地址。 external:* : 匹配除 localhost、使用 file:// 协议外的所有远程仓库 repo1,repo2:匹配仓库 repo1 和 repo2 *,!repo1: 匹配所有远程仓库, repo1 除外 profiles

作用:构建方法的配置清单, maven 将根据不同环境参数来使用这些构建配置。

注意:settings.xml 中的 profile元素是 pom.xml中 profile元素的裁剪版本。

settings.xml负责的是整体的构建过程, pom.xml负责单独的项目对象构建过程。 settings.xml 只包含了id, activation, repositories, pluginRepositories 和 properties 元素。 如果 settings中的 profile 被激活, 它的值会覆盖任何其它定义在 pom.xml中或 profile.xml中的相同 id 的 profile。

查看当前激活的 profile

mvn help:active-profiles 复制代码 jdk-1.4 false 1.4 jdk14 Repository for JDK 1.4 builds http://www.myhost.com/maven/jdk14 default always env-dev target-env dev /path/to/tomcat/instance 复制代码 activeProfiles

作用:手动激活profiles的列表,按照profile被应用的顺序定义activeProfile

说明:

任何在activeProfile中定义的profile id,不论环境设置如何,其对应的 profile都会被激活 如果没有匹配的profile,则什么都不会发生。 如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。 alwaysActiveProfile anotherAlwaysActiveProfile 复制代码 特殊说明 私服说明

私服的配置推荐用profile配置而不是mirror

实际应用

实际应用中,经常使用的是、、、有限几个节点,其他节点使用默认值足够应对大部分的应用场景。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有