Maven 之 settings.xml文件详解

目录

一. 前言

二. settings.xml 文件详解

2.1. 配置节点详解

2.2. 实例详解

三. mirrorOf 详解


一. 前言

    Maven是一个流行的Java项目构建工具,它使用pom.xml文件来定义项目的配置和依赖关系。然而,Maven还提供了另一个重要的文件——setting.xml文件,用于配置Maven本身的行为。在本文中,我们将深入介绍setting.xml文件的作用和常见的配置选项。

    关于Maven的详细介绍请参见《Maven 从入门到精通》。

二. settings.xml 文件详解

2.1. 配置节点详解

    直接修改安装包下 setting.xml 文件,就能在机器上全局地定制 Maven 的行为。一般情况下,我们更偏向于复制该文件至 ~/.m2/ 目录下(~表示用户目录;在Linux或Mac OS X中,它的默认位置是 ~/.m2/settings.xml,在Windows系统中,它的默认位置是%USER_HOME%.m2\settings.xml),然后修改该文件,在用户范围定制 Maven 的行为。Maven运行时,先找用户目录 .m2 文件夹的 settings.xml,没有的话去安装包里面找全局的settings.xml。

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

配置节点 默认值 说明
localRepository /path/to/local/repo 本地仓库
interactiveMode true Maven是否需要和用户交互以获得输入。
usePluginRegistry false Maven是否需要使用plugin-registry.xml文件来管理插件版本。
offline false Maven是否需要在离线模式下运行。
pluginGroups 当插件的组织Id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。
pluginGroups.pluginGroup plugin的组织Id(groupId)
proxies 配置代理节点
proxies.proxy 具体代理节点
proxies.proxy.id optional 代理的唯一定义符,用来区分不同的代理元素。
proxies.proxy.active true 是否激活
proxies.proxy.protocol http 代理的协议
proxies.proxy.username proxyuser 代理的用户名
proxies.proxy.password proxypass 代理的密码
proxies.proxy.host proxy.host.net 代理的主机名
proxies.proxy.port 80 代理的端口
proxies.proxy.nonProxyHosts local.net|some.host.com 不该被代理的主机名列表。
servers 服务端配置节点
servers.server 具体的服务端配置
servers.server.id deploymentRepo server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。
servers.server.username repouser 鉴权用户名
servers.server.password repopwd 鉴权密码
servers.server.privateKey /path/to/private/key 鉴权时使用的私钥位置。
servers.server.passphrase optional; leave empty if not used. 鉴权时使用的私钥密码。
servers.server.filePermissions 文件被创建时的权限。
servers.server.directoryPermissions 目录被创建时的权限。
servers.server.configuration 传输层额外的配置项。
mirrors 镜像列表
mirrors.mirror 具体的镜像节点
mirrors.mirror.id mirrorId 镜像id
mirrors.mirror.name Human Readable Name for this Mirror. 镜像名称
mirrors.mirror.url 镜像的URL
mirrors.mirror.mirrorOf repositoryId 被镜像的服务器的id
profiles 根据环境参数来调整构建配置的列表。
profiles.profile 具体的环境配置节点
profiles.profile.id 该配置的唯一标识符。
profiles.profile.activation 自动触发profile的条件逻辑。
profiles.profile.activation.jdk 1.8 activation有一个内建的java版本检测,如果检测到jdk版本与期待的一样,profile被激活。
profiles.profile.activation.property 如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile就会被激活。
profiles.profile.activation.property.name target-env 激活profile的属性的名称
profiles.profile.activation.property.value dev 激活profile的属性的值
profiles.profile.repositories 远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目。

profiles.profile.repositories

.repository

具体的远程仓库节点

profiles.profile.repositories

.repository.id

远程仓库唯一标识

profiles.profile.repositories

.repository.name

远程仓库名称

profiles.profile.repositories

.repository.url

远程仓库URL

profiles.profile.repositories

.repository.layout

default 用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。

profiles.profile.repositories

.repository.snapshotPolicy

always
profiles.profile.properties 对应profile的扩展属性列表。
profiles.profile.properties.tomcatPath 如果这个profile被激活,那么属性${user.install}就可以被访问了
activeProfiles alwaysActiveProfile 手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。
activeProfiles.activeProfile 具体的激活profile

2.2. 实例详解

     
  
        
      
    usr/local/maven 
        
      
    true  
        
      
      
      
    false  
        
      
      
    false  
        
      
      
      
      
      
            
          
        org.codehaus.mojo  
           
      
        
      
      
            
          
          
                
              
            myproxy  
                
              
            true  
                
              
            http://…  
                
              
            proxy.somewhere.com  
                
              
            8080  
                
               
            proxyuser  
                
              
            somepassword  
                
              
            *.google.com|ibiblio.org  
                
          
           
      
        
      
      
            
          
          
                
              
            server001  
                
              
            my_login  
                
              
            my_password  
                
              
              
            ${usr.home}/.ssh/id_dsa  
                
              
            some_passphrase  
                
              
              
            664  
                
              
            775  
                
              
              
                
          
           
      
        
      
      
            
          
          
                
              
            planetmirror.com  
                
              
            PlanetMirror Australia  
                
              
            http://downloads.planetmirror.com/pub/maven2  
                
              
              
            central  
                
          
           
      
        
      
      
      
      
      
            
          
          
                
              
            test  
                
              
              
              
              
              
                    
                  
                false  
                    
                  
                1.8  
                    
                  
                  
                        
                      
                    Windows 10  
                        
                      
                    Windows  
                        
                      
                    x86  
                        
                      
                    5.1.2600  
                          
                  
                    
                  
                  
                  
                        
                      
                    mavenVersion  
                        
                      
                    2.0.3  
                          
                  
                    
                  
                  
                  
                        
                      
                    /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/  
                        
                      
                    /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/  
                          
                  
                     
              
                
               
              
               
              
              
              
              
              
              
              
                  
                usr/local/winner/jobs/maven-guide  
                     
              
                
              
              
                    
                  
                  
                        
                      
                    codehausSnapshots  
                        
                      
                    Codehaus Snapshots  
                        
                      
                      
                            
                          
                        false  
                            
                          
                          
                        always  
                            
                          
                          
                        warn  
                               
                      
                        
                      
                      
                      
                                
                          
                          
                          
                               
                      
                        
                      
                    http://snapshots.maven.codehaus.org/maven2  
                        
                      
                      
                    default  
                          
                  
                     
              
                
              
              
              
              
                    
                  
                  
                      
                          
                          
                          
                      
                           
                      
                          
                          
                          
                      
                           
                      
                      
                      
                      
                  
                          
            
                
          
           
    
                
      
      
      
      
      
                      
        env-test  
                     
    
        

三. mirrorOf 详解

    mirrorOf 可以理解“为某个仓库(repository)的做镜像”,填写的是repostoryId。* 的意思就是匹配所有的仓库(repository)。相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。

在maven中配置一个mirror时,有多种形式:
1. mirrorOf=“*”  // mirror一切,你配置的repository不起作用了。
2. mirrorOf=my-repo-id // 镜像my-repo-id,你配置的my-repo-id仓库不起作用了。
3. mirrorOf=*,!my-repo-id  // !表示非运算,排除你配置的my-repo-id仓库,其他仓库都被镜像了。就是请求下载my-repo-id的仓库的jar不使用mirror的url下载,其他都是用mirror配置的url下载。
4. mirrorOf=external:*  // 如果本地库存在就用本地库的,如果本地没有,所有下载就用mirror配置的url下载。

你可能感兴趣的:(Java,maven,java,mirrorOf)