zoukankan      html  css  js  c++  java
  • [maven] settings 文件节点配置详解

    基本结构

    <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/> 
      <interactiveMode/> 
      <usePluginRegistry/> 
      <offline/> 
      <pluginGroups/> 
      <servers/> 
      <mirrors/> 
      <proxies/> 
      <profiles/> 
      <activeProfiles/> 
    </settings>

    localRepository 表示本地库的保存位置,也就是maven2主要的jar保存位置,默认在${user.dir}/.m2/repository,如果需要另外设置,就换成其他的路径。

    如: 

    <localRepository>d:oceanic_workspaceoceanic_maven_repo
    epository</localRepository>

    offline 如果不想每次编译,都去查找远程中心库,那就设置为true。当然前提是你已经下载了必须的依赖包。 默认false。

    <offline>false</offline>

    Servers :在POM中的 distributionManagement元素定义了开发库。然而,特定的username和pwd不能使用于pom.xml,所以通过此配置来保存server信息。

    • id:server 的id,用于匹配distributionManagement库id,比较重要。
    • username, password:用于登陆此服务器的用户名和密码
    • privateKey, passphrase:设置private key,以及passphrase
    • filePermissions, directoryPermissions:当库文件或者目录创建后,需要使用权限进行访问。
        <servers> 
            <server> 
              <id>server001</id> 
              <username>my_login</username> 
              <password>my_password</password> 
              <privateKey>${usr.home}/.ssh/id_dsa</privateKey> 
              <passphrase>some_passphrase</passphrase> 
              <filePermissions>664</filePermissions> 
              <directoryPermissions>775</directoryPermissions> 
              <configuration></configuration> 
            </server>
            <server> 
              <id>server002</id> 
              <username>my_login</username> 
              <password>my_password</password> 
              <privateKey>${usr.home}/.ssh/id_dsa</privateKey> 
              <passphrase>some_passphrase</passphrase> 
              <filePermissions>664</filePermissions> 
              <directoryPermissions>775</directoryPermissions> 
              <configuration></configuration> 
            </server>
        </servers>

    Mirrors
    表示镜像库,指定库的镜像,用于增加其他库 

    • id,name:唯一的标志,用于区别镜像
    • url:镜像的url
    • mirrorOf:此镜像指向的服务id
      <mirrors> 
        <mirror> 
          <id>planetmirror.com</id> 
          <name>PlanetMirror Australia</name> 
          <url>http://downloads.planetmirror.com/pub/maven2</url> 
          <mirrorOf>central</mirrorOf> 
        </mirror> 
      </mirrors> 

     <mirrorOf> 表示只为central仓库做镜像,如果想为所有的仓库做镜像那么可以改为:<mirrorOf>*</mirrorOf>

    Proxies 
    此代理设置,主要用于无法直接访问中心的库用户配置。

    • id:代理的标志
    • active:是否激活代理
    • protocol, host, port:protocol://host:port 代理
    • username, password:用户名和密码
    • nonProxyHosts: 不需要代理的host
      <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> 

    Profiles 
      类似于pom.xml中的profile元素

      主要包括activation,repositories,pluginRepositories 和properties元素 
      刚开始接触的时候,会比较迷惑,这是maven2中比较强大的功能——个性配置。 
      单独定义profile后,并不会生效,需要通过满足条件来激活。 

    repositories 和pluginRepositories 依照如下的配置,定义了本地开发库,用于release 发布。

    <repositories> 
        <repository> 
            <id>repo-local</id> 
            <name>Internal 开发库</name> 
            <url>http://192.168.0.2:8082/repo-local</url> 
            <releases> 
                <enabled>true</enabled> 
                <updatePolicy>never</updatePolicy> 
                <checksumPolicy>warn</checksumPolicy> 
            </releases> 
            <snapshots> 
                <enabled>false</enabled> 
            </snapshots> 
            <layout>default</layout> 
        </repository> 
    </repositories> 
    
    <pluginRepositories> 
        <pluginRepository> 
            <id>repo-local</id> 
            <name>Internal 开发库</name> 
            <url>http://192.168.0.2:8082/repo-local</url> 
            <releases> 
                <enabled>true</enabled> 
                <updatePolicy>never</updatePolicy> 
                <checksumPolicy>warn</checksumPolicy> 
            </releases> 
            <snapshots> 
                <enabled>false</enabled> 
            </snapshots> 
            <layout>default</layout> 
        </pluginRepository> 
    </pluginRepositories>         

    releases, snapshots:每个产品的版本的Release或者snapshot(注:release和snapshot的区别,release一般是比较稳定的版本,而snapshot基本上不稳定,只是作为快照) 

    properties作为placeholder值,如ant的properties。 

    包括以下的5种类型值: 

    1. env.X,返回当前的环境变量
    2. project.x:返回pom中定义的元素值,如project.version
    3. settings.x:返回settings.xml中定义的元素
    4. java 系统属性:所有经过java.lang.System.getProperties()返回的值
    5. x:用户自己设定的值

    Activation 用于激活此profile 

    • jdk:如果匹配指定的jdk版本,将会激活
    • os:操作系统
    • property:如果maven能检测到相应的属性
    • file: 用于判断文件是否存在或者不存在
        <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> 
          </activation> 

    Active Profiles 

    除了使用activation来激活profile,同样可以通过activeProfiles来激活 

    env-test 表示指定的profile id 

      <activeProfiles> 
        <activeProfile>env-test</activeProfile> 
      </activeProfiles> 

    interactiveMode:表示是否使用交互模式,默认是true;如果设为false,那么当Maven需要用户进行输入的时候,它会使用一个默认值。

     <interactiveMode>true</interactiveMode>

    pluginGroups:在pluginGroups元素下面可以定义一系列的pluginGroup元素。表示当通过plugin的前缀来解析plugin的时候到哪里寻找。pluginGroup元素指定的是plugin的groupId。默认情况下,Maven会自动把org.apache.maven.plugins和org.codehaus.mojo添加到pluginGroups下。

      <pluginGroups>
        <pluginGroup>com.your.plugins</pluginGroup>
      </pluginGroups>

    参考资料:http://blog.csdn.net/jinshuaiwang/article/details/23686099

  • 相关阅读:
    奇葩的Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
    dubbo的本地存根
    已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。
    数字字符串转换成与其面值相同的长整形整数
    PHP实现MySQL的主键id自动重新自增排序
    四叶玫瑰数
    PHP动态实现从数据库中访问链接到标签a的herf中
    Proteus8.0的main.asm源代码使用
    Office 2010 安装和激活出错解决办法
    PHP实现文件读写中英文数据分割插入数组代码
  • 原文地址:https://www.cnblogs.com/avivaye/p/5336647.html
Copyright © 2011-2022 走看看