Maven中setting文件的配置

maven配置文件为settings.xml,主要应用于对maven管理的项目的依赖配置进行自动更新和下载,一般情况下,maven会根据settings.xml文件给出的配置信息和url依次从本地仓库、远程仓库和中央仓库下载项目指定的依赖jar包(依赖包的信息配置在项目的pom.xml文件中给予配置)

settings.xml文件的存储位置有两个:(1)${M2_HOME}/conf/settings.xml,此为maven的安装目录下conf文件夹得xml配置文件,是应用于全局的项目场景,换言之即操作系统下所有用户的maven项目的总体依赖配置都将根据这个settings.xml文件进行。(2)${user.home}/.m2/settings.xml(该目录为默认的本地仓库目录,根据本地仓库目录的变化而变化),此为操作系统下单一用户的maven配置,应用范围仅为该用户下的项目。由于全局情况下maven进行更新时所有用户的前期配置都将被更新和修改,因此一般情况下推荐使用后一种配置方法。

一般配置内容如下:

  
    
<settings   xmlns="http://maven.apache.org/POM/4.0.0"    
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
      
    <localRepository>usr/local/mavenlocalRepository>  
      
    <interactiveMode>trueinteractiveMode>  
      
      
      
    <usePluginRegistry>falseusePluginRegistry>  
      
      
    <offline>falseoffline>  
      
      
      
      
    <pluginGroups>  
          
        <pluginGroup>org.codehaus.mojopluginGroup>  
    pluginGroups>  
      
    <proxies>  
          
        <proxy>  
              
            <id>myproxyid>  
              
            <active>trueactive>  
              
            <protocol>http://…protocol>  
              
            <host>proxy.somewhere.comhost>  
              
            <port>8080port>  
               
            <username>proxyuserusername>  
              
            <password>somepasswordpassword>  
              
            <nonProxyHosts>*.google.com|ibiblio.orgnonProxyHosts>   
        proxy>  
    proxies>  
      
    <servers>  
          
        <server>  
              
            <id>server001id>  
              
            <username>my_loginusername>  
              
            <password>my_passwordpassword>  
              
              
            <privateKey>${usr.home}/.ssh/id_dsaprivateKey>  
              
            <passphrase>some_passphrasepassphrase>  
              
              
            <filePermissions>664filePermissions>  
              
            <directoryPermissions>775directoryPermissions>   
              
            <configuration>configuration>   
        server> 
    servers>  
      
    <mirrors>  
          
        <mirror>    
              
            <id>planetmirror.comid>   
              
            <name>PlanetMirror Australianame>   
              
            <url>http://downloads.planetmirror.com/pub/maven2url>   
              
              
            <mirrorOf>centralmirrorOf>   
        mirror>  
    mirrors>  
      
      
      
      
    <profiles>    
          
        <profile>     
              
            <id>testid>    
              
              
              
              
            <activation>    
                  
                <activeByDefault>falseactiveByDefault>    
                  
                <jdk>1.7jdk>   
                  
                <os>    
                      
                    <name>Windows XPname>  
                      
                    <family>Windowsfamily>   
                      
                    <arch>x86arch>    
                      
                    <version>5.1.2600version>        
                os>  
                  
                  
                <property>      
                      
                    <name>mavenVersionname>  
                      
                    <value>2.0.3value>       
                property>   
                  
                  
                <file>      
                      
                    <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/exists>     
                      
                    <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/missing>          
                file>      
            activation>  
               
              
               
              
              
              
              
              
            <properties>  
                  
                <user.install>usr/local/winner/jobs/maven-guideuser.install>        
            properties>  
              
            <repositories>    
                  
                <repository>     
                      
                    <id>codehausSnapshotsid>   
                      
                    <name>Codehaus Snapshotsname>  
                      
                    <releases>  
                          
                        <enabled>falseenabled>  
                          
                          
                        <updatePolicy>alwaysupdatePolicy>  
                          
                          
                        <checksumPolicy>warnchecksumPolicy>     
                    releases>  
                      
                      
                    <snapshots>  
                        <enabled />  
                        <updatePolicy />  
                        <checksumPolicy />        
                    snapshots>  
                      
                    <url>http://snapshots.maven.codehaus.org/maven2url>  
                      
                      
                    <layout>defaultlayout>      
                repository>     
            repositories>    
              
              
              
            <pluginRepositories>     
                  
                <pluginRepository>  
                    <releases>  
                        <enabled />  
                        <updatePolicy />  
                        <checksumPolicy />  
                    releases>             
                    <snapshots>  
                        <enabled />  
                        <updatePolicy />  
                        <checksumPolicy />  
                    snapshots>              
                    <id />  
                    <name />  
                    <url />  
                    <layout />  
                pluginRepository>                  
            pluginRepositories>           
              
              
              
              
            <activeProfiles>             
                <activeProfile>env-testactiveProfile>            
            activeProfiles>         
        profile>         
    profiles>       
settings>  

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

节点
在仓库的配置一节中,已经对setting.xml中的常用节点做了详细的说明。在这里需要特别介绍一下的是节点的配置,profile是maven的一个重要特性。

节点包含了激活(activation),仓库(repositories),插件仓库(pluginRepositories)和属性(properties)共四个子元素元素。profile元素仅包含这四个元素是因为他们涉及到整个的构建系统,而不是个别的项目级别的POM配置。

profile可以让maven能够自动适应外部的环境变化,比如同一个项目,在linux下编译linux的版本,在win下编译win的版本等。一个项目可以设置多个profile,也可以在同一时间设置多个profile被激活(active)的。自动激活的 profile的条件可以是各种各样的设定条件,组合放置在activation节点中,也可以通过命令行直接指定。如果认为profile设置比较复杂,可以将所有的profiles内容移动到专门的 profiles.xml 文件中,不过记得和pom.xml放在一起。

activation节点是设置该profile在什么条件下会被激活,常见的条件有如下几个:

  1. os

判断操作系统相关的参数,它包含如下可以自由组合的子节点元素

message - 规则失败之后显示的消息

arch - 匹配cpu结构,常见为x86

family - 匹配操作系统家族,常见的取值为:dos,mac,netware,os/2,unix,windows,win9x,os/400等

name - 匹配操作系统的名字

version - 匹配的操作系统版本号

display - 检测到操作系统之后显示的信息

  1. jdk

检查jdk版本,可以用区间表示。

  1. property

检查属性值,本节点可以包含name和value两个子节点。

  1. file

检查文件相关内容,包含两个子节点:exists和missing,用于分别检查文件存在和不存在两种情况。

如果settings中的profile被激活,那么它的值将覆盖POM或者profiles.xml中的任何相等ID的profiles。

如果想要某个profile默认处于激活状态,可以在中将该profile的id放进去。这样,不论环境设置如何,其对应的 profile都会被激活。

你可能感兴趣的:(项目实战,maven,seting,配置)