首页 > 其他分享 >settings.xml详解

settings.xml详解

时间:2024-11-25 18:45:12浏览次数:7  
标签:xml profile settings 仓库 maven 详解 Maven

settings.xml详解

作用

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

文件位置
  • 全局配置:Maven的安装目录的conf子目录下面(${M2_HOME}/conf/settings.xml

  • 用户目录的的.m2子目录下面({user.home}/.m2/settings.xml)。

    配置文件优先级:局部>全局

    ​ 在Maven安装目录的conf子目录下面的settings.xml才是真正的全局的配置。而用户目录的.m2子目录下面的settings.xml的配置只是针对当前用户的。当这两个文件同时存在的时候,那么对于相同的配置信息用户目录下面的settings.xml中定义的会覆盖Maven安装目录下面的settings.xml中的定义。用户目录下的settings.xml文件一般是不存在的,但是Maven允许我们在这里定义我们自己的settings.xml,如果需要在这里定义我们自己的settings.xml的时候就可以把Maven安装目录下面的settings.xml文件拷贝到用户目录的.m2目录下,然后改成自己想要的样子。

元素讲解

元素概览

顶级元素

  1. LocalRepository

    作用:该值表示构建系统本地仓库的路径。默认值:${user.home}/.m2/repository

    D:\Maven\repository

  2. InteractiveMode

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

    默认值:true

    true

  3. offline

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

    默认值:false

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

    false

  4. pluginGroups

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

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

    com.your1.plugins
     <pluginGroup>com.your2.plugins</pluginGroup>
    
  5. proxies

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

  1. servers

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

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

  1. mirrors

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

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

    • 多个mirror按照id字母顺序进行排列,与编写顺序无关
    • 在第一个mirror找不到artifact,不会继续找下一个镜像
    • 只有当mirror无法链接的时候,才会尝试找下一个镜像,类似容灾备份

alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
  1. profiles

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

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

    • settings.xml负责的是整体的构建过程, pom.xml负责单独的项目对象构建过程。

    • settings.xml 只包含了id, activation, repositories, pluginRepositoriesproperties 元素。

    • 如果 settings中的 profile 被激活, 它的值会覆盖任何其它定义在 pom.xml中或 profile.xml中的相同 id 的 profile

  1. Activation

    自动触发profile的条件逻辑。这是profile中最重要的元素。跟pom.xml中的profile一样,settings.xml中的profile也可以在特定环境下改变一些值,而这些环境是通过activation元素来指定的。activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以包含profile的id。profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活(如,-P test)。
    jdk:表示当jdk的版本满足条件的时候激活,在这里是1.6。

    os:表示当操作系统满足条件的时候激活。
    property:property是键值对的形式,表示当Maven检测到了这样一个键值对的时候就激活该profile。

file:表示当文件存在或不存在的时候激活,exists表示存在,missing表示不存在。如下面例子表示当文件hello/world不存在的时候激活该profile。

<profile>
    <activation>
        <file>
            <missing>hello/world</missing>
        </file>
    </activation>
</profile>

repositories:用于定义远程仓库的(远程仓库列表),当该profile是激活状态的时候,这里面定义的远程仓库将作为当前pom的远程仓库。它是maven用来填充构建系统本地仓库所使用的一组远程仓库。

<repositories>
  <!--包含需要连接到远程仓库的信息 -->
  <repository>
    <!--远程仓库唯一标识 -->
    <id>codehausSnapshots</id>
    <!--远程仓库名称 -->
    <name>Codehaus Snapshots</name>
    <!--如何处理远程仓库里发布版本的下载 -->
    <releases>
      <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
      <enabled>false</enabled>
      <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
      <updatePolicy>always</updatePolicy>
      <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
      <checksumPolicy>warn</checksumPolicy>
    </releases>
    <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 -->
    <snapshots>
      <enabled />
      <updatePolicy />
      <checksumPolicy />
    </snapshots>
    <!--远程仓库URL,按protocol://hostname/path形式 -->
    <url>http://snapshots.maven.codehaus.org/maven2</url>
    <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 -->
    <layout>default</layout>
  </repository>
</repositories>
**releases、snapshots**:这是对于工件的类型的限制。
<releases>
    <enabled>true</enabled>
</releases>
<snapshots>
    <enabled>true</enabled>
</snapshots>
**enabled:**表示这个仓库是否允许这种类型的工件。

updatePolicy:表示多久尝试更新一次。可选值有always、daily、interval:minutes(表示每多久更新一次)和never。

checksumPolicy:当Maven在部署项目到仓库的时候会连同校验文件一起提交,checksumPolicy表示当这个校验文件缺失或不正确的时候该如何处理,可选项有ignore、fail和warn。

pluginRepositories:(插件仓库列表)在Maven中有两种类型的仓库,一种是存储工件的仓库,另一种就是存储plugin插件的仓库。pluginRepositories的定义和repositories的定义类似,它表示Maven在哪些地方可以找到所需要的插件。和repository类似,只是repository是管理jar包依赖的仓库,pluginRepositories则是管理插件的仓库。maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。pluginRepositories元素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地址。

 <pluginRepositories>
     <!-- 定义了两个插件仓库 -->
     <pluginRepository>
         <id>ztyhcorp-repository-maven-public</id>
         <name>maven-public</name>
         <url>http://ztyhcorp-maven.pkg.devops.tzbank.ins/repository/repository/maven-public/</url>
         <releases>
             <enabled>true</enabled>
         </releases>
         <snapshots>
             <enabled>true</enabled>
         </snapshots>
     </pluginRepository>
     <pluginRepository>
         <id>ztyhcorp-repository-maven-vulnerability</id>
         <name>maven-vulnerability</name>
         <url>http://ztyhcorp-maven.pkg.devops.tzbank.ins/repository/repository/maven-vulnerability/</url>
         <releases>
             <enabled>true</enabled>
         </releases>
         <snapshots>
             <enabled>true</enabled>
         </snapshots>
     </pluginRepository>
</pluginRepositories>
  1. activeProfiles

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

    说明:

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

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

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

    maven在用户home目录下的setting.xml<localRepository>可以不配置。

标签:xml,profile,settings,仓库,maven,详解,Maven
From: https://www.cnblogs.com/wu-wenjie/p/18568362

相关文章

  • 5大核心技术详解:AI视频监控系统背后的工作原理
    随着人工智能的发展,AI视频监控技术成为当前视频监控行业的一大革新。传统监控系统往往依赖人工实时查看,效率低且容易遗漏,而AI赋能的视频监控系统可以通过图像识别、深度学习等技术实现自动化、智能化。本文将从技术层面对AI视频监控的五大核心组成部分进行详细解析。高效数据处......
  • 用python、JAVA等多种语言的实例代码演示教你如何免费获取股票数据(实时数据、历史数据
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • OJ题目详解——1.5~42:画矩形
    描述根据参数,画出矩形。输入输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。输出输出画出的图形。#include<stdio.h>intmain()......
  • OJ题目详解——1.5~31:开关灯
    描述假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。......
  • C语言水仙花数详解(附带源码和解析)
    水仙花数,指的是一种独特的三位数,其各位数字的立方和恰好等于自身。举个例子,153就是水仙花数,因为1的立方为1,5的立方是125,3的立方是27,1+125+27正好等于153。再如370,3的立方是27,7的立方是343,0的立方是0,27+343+0等于370,所以370也是水仙花数。要找出......
  • C语言中的预处理详解
    编译链接的过程:预处理——编译——汇编——链接大家好,今天我来通过一篇博客带领大家深入探讨一下C语言当中的预处理。(预处理阶段完成)一:预定义符号C语言中设置了一些预定义符号,可以直接使用(C语言内部已经定义好了),预定义符号也是在预处理期间处理的。使用举例:需要注意的是......
  • Linux常用命令之groupdel命令详解
    groupdel命令详解groupdel是一个用于删除用户组的命令行工具,常见于类Unix操作系统(如Linux和macOS)。通过groupdel命令,可以从系统中移除一个用户组。删除用户组时,需要注意一些重要的事项,以确保不会影响系统的正常运行。基本语法groupdel命令的基本语法如下:group......
  • Linux常用命令之chmod命令详解
    chmod命令详解chmod(changemode)是Unix和Linux操作系统中用于改变文件或目录的访问权限的命令。通过chmod,用户可以设置文件或目录的所有者、所属组以及其他用户(即非所有者且不属于文件所属组的用户)的读取、写入和执行权限。基本语法chmod命令的基本语法如下:chmod......
  • prometheus监控04.1-AlertManager番外篇详解
    1、Prometheus告警简介告警能力在Prometheus的架构中被划分成两个独立的部分。如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。在Prometheus中一条告警规则主要由以下几部......
  • XML解释
    XML的全拼是ExtensibleMarkupLanguage,即可扩展标记语言。是一种用于标记电子文件使其具有结构性的标记语言,它可以用来存储和传输数据,具有良好的可读性和可扩展性。示例<?xmlversion="1.0"encoding="UTF-8"?><!--XML声明,定义文档类型和编码--><library><!--根元......