zoukankan      html  css  js  c++  java
  • maven的配置文件的心得(profile和mirrorof)

    1、maven安装后有两个地方有settings.xml,

    (1)一个是maven安装路径下:conf/settings.xml,

    (2)一个是用户的本地仓库下:.m2/settings.xml,这个路径是默认的用户的maven的本地仓库的路径

    (3)如果指定了自定义的本地仓库的路径,那么把settings.xml拷贝一份放到此路径下,此时你的硬盘里有3个maven的settings.xml,只不过(2)步的不起作用了

    如果用户范围的settings.xml和安装路径下的settings.xml内容不一样的话,maven在工作的时候会合并这两个settings.xml,而且用户范围的优先

    2、再说settings配置详解

    先上一个完整的settings.xml的配置文件,后面有干货

    <?xml version="1.0" encoding="UTF-8"?>
     
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <!--指定本地仓库存储路径。默认值为~/.m2/repository 即 ${user.home}/.m2/repository。 -->
      <localRepository>d:/.m2/repository</localRepository>
     
        <!--指定Maven是否需要和用户输入进行交互。true:需要与用户交互;false:使用一个合理的默认值。默认值为true。 -->
      <interactiveMode>true</interactiveMode>
     
      <!--指定是否使用plugin-registry.xml文件来管理插件版本。设为true表示使用。默认值为false。-->
      <usePluginRegistry>false</usePluginRegistry>
     
      <!--指定是否在离线模式下运行。设为true表示项目构建要在离线模式下运行,默认值为false。 -->
      <offline>false</offline>
     
        <!-- 指定插件groupId列表,用于搜索时插件的groupId没有明确规定。 -->
        <pluginGroups>
             <!-- 指定使用插件查找进一步的组标识符 -->
            <pluginGroup>com.micmiu.plugins</pluginGroup>
        </pluginGroups>
     
      <!-- 指定这台机器连接到网络的代理服务器的列表。除非另有规定(系统属性或命令行开关),
           列表中配置的第一代理将被激活使用。-->
      <proxies>
        <!-- 配置代理服务器的相关参数 -->
        <proxy>
            <!-- 代理标识ID,默认值:default -->
          <id>micmiuProxy</id>
          <!-- 指定是否激活,默认值:true -->
          <active>true</active>
          <!-- 指定代理协议,默认值:http -->
          <protocol>http</protocol>
          <!-- 指定代理认证的用户名 -->
          <username>micmiu</username>
          <!-- 指定代理认证用户的密码 -->
          <password>mypwd</password>
          <!-- 指定代理服务器的主机名 -->
          <host>micmiu.com</host>
          <!-- 指定代理服务的端口 默认值:8080 -->
          <port>80</port>
          <!-- 指定不被代理的主机名列表。多个用|分隔。-->
          <nonProxyHosts>ctosun.com|ctosun.micmiu.com</nonProxyHosts>
        </proxy>
      </proxies>
     
      <!-- 这是一个认证配置的列表,系统内部根据配置的serverID使用。认证配置用于maven链接到远程服务-->
      <servers>
        <!-- 指定的身份认证信息用于连接到一个特定的服务器时,确定系统内的唯一的名称(简称下面的'id'属性)。-->
        <server>
            <!-- 这是server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。-->
          <id>micmiu-releases</id>
          <!-- 服务器认证的用户名 -->
          <username>michael</username>
          <!-- 服务器认证的用户对应的密码 -->
          <password>mypwd</password>
        </server>
     
        <!-- 另一个示例 私钥/密码 -->
        <server>
          <id>micmiu-snapshots</id>
          <!-- 认证时使用的私钥文件。 -->
          <privateKey>/home/micmiu/.ssh/id_dsa</privateKey>
          <!-- 认证时使用的私钥密码,没有密码就设为空 -->
          <passphrase>mypwd</passphrase>
          <!-- 目录被创建时的权限设置。其值对应了unix文件系统的权限,如664,或者775 -->
          <directoryPermissions>775</directoryPermissions>
          <!-- 仓库文件创建时的权限设置。其值对应了unix文件系统的权限,如664,或者775。 -->
          <filePermissions>664</filePermissions>
        </server>
      </servers>
     
      <!-- 指定镜像列表,用于从远程仓库下载资源 -->
      <mirrors>
        <!-- 指定仓库的镜像站点,代替一个给定的库。该镜像藏库有一个ID相匹配的mirrorOf元素。
             ID是用于继承和直接查找目的,必须是唯一的。-->
        <mirror>
            <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
          <id>mirrorId</id>
          <!--被镜像的服务器的id,比如:central,不能和id匹配。-->
               <mirrorOf>central</mirrorOf>
          <name>micmiu for dev.</name>
          <url>http://dev.micmiu.com/repo/maven2</url>
        </mirror>
     
      </mirrors>
     
      <!-- 这是一个可以在各种不同的方式激活的配置文件列表,并可以修改构建过程。在settings.xml中提供的信息,
           旨在提供本地机器允许建立在本地环境中工作的具体路径和库位置。有多种方式可以激活配置属性:一种在settings.xml中<activeProfiles>指定;
           另一种实质上依赖于系统属性,无论是匹配特定的属性值或只是测试到它的存在.配置文件也可以根据JDK版本的前缀进行激活,1.4 可以激活1.4.2_07
        注:对于在settings.xml中定义的配置,你仅限于指定资源仓库、插件仓库和用于插件在POM中变量的自由形式属性的定义 -->
      <profiles>
        <!-- 指定生成过程的介绍,使用一个或多个上述机制被激活。对于继承而言,激活通过<activatedProfiles/>或命令行配置文件,
             配置文件必须有一个唯一的ID。此配置文件的例子使用的JDK版本触发激活。-->
        <profile>
            <!--该配置的唯一标识符。 -->
          <id>jdk-1.4</id>
     
                <!--自动触发配置文件的逻辑定义。Activation的逻辑配置决定了是否开启该profile。activation元素并不是激活profile的唯一方式。
                    settings.xml文件中的activeProfile元素可指定需要激活的profile的id。
                    profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活 -->
          <activation>
              <!--指定是否激活的标识 默认值为false-->
                <activeByDefault>false</activeByDefault>
     
              <!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有不是以1.4开头的JDK版本。-->
            <jdk>1.4</jdk>
     
            <!-- 当检测到匹配的操作系统属性时,指定该配置文件将被激活, -->
               <os>
                     <!--激活profile的操作系统的名字 -->
                     <name>windows 7</name>
                     <!--激活profile的操作系统所属家族(如 'windows')  -->
                     <family>windows</family>
                    <!--激活profile的操作系统体系结构  -->
                     <arch>x86</arch>
                     <!--激活profile的操作系统版本-->
                     <version>6.1</version>
                </os>
     
                <!-- 检测系统对应的属性和值(该值可在POM中通过${属性名称}引用),配置就会被激活。
                    如果值字段是空的,那么存在属性名称字段就会激活 -->
                <property>
                     <!-- 属性的名称 -->
                     <name>mavenVersion</name>
                     <!-- 属性的值 -->
                    <value>3.0.4</value>
                </property>
                <!-- 通过检测该文件的是否存在来激活配置。missing检查文件是否存在,如果不存在则激活profile;exists则会检查文件是否存在,如果存在则激活。-->
                <file>
                    <!--如果指定的文件存在,则激活profile。 -->
                    <exists>/usr/local/micmiu/workspace/myfile</exists>
                    <!--如果指定的文件不存在,则激活profile。-->
                    <missing>/usr/local/micmiu/workspace/myfile</missing>
                </file>
          </activation>
     
                <!-- 对应profile的扩展属性列表。Maven属性和Ant中的属性一样,可以用来存放一些值。这些值可以在POM中的任何地方使用标记${X}来使用,
                     这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。
                           1. env.X: 表示系统环境变量。例如,"env.PATH" 等同于 $path环境变量(在Windows上是%PATH%)。
                          2. project.x:表示 POM中对应的属性值。
                          3. settings.x: 表示 settings.xml中对应属性值。
                          4. Java系统属性: 所有可通过java.lang.System.getProperties()访问的属性都能在POM中使用该形式访问。
                          5. x: 在<properties/>元素中,或者外部文件中设置,以${someVar}的形式使用。 -->
                 <properties>
                  <user.blog>www.micmiu.com</user.blog>
              </properties>
     
        </profile>
     
        <!-- 这是另一个配置文件,根据系统属性来激活 -->
        <profile>
            <!--该配置的唯一标识符。 -->
          <id>env-dev</id>
          <activation>
            <property>
                <!-- 被用来激活配置文件的属性的名称 -->
              <name>target-env</name>
              <!-- 被用来激活配置文件的属性的值 -->
              <value>dev</value>
            </property>
          </activation>
          <!-- 指定配置文件的扩展配置 内容采取property.value的形式 -->
          <properties>
            <tomcatPath>/path/to/tomcat/instance</tomcatPath>
          </properties>
        </profile>
     
        <profile>
                <id>repo-dev</id>
                <!-- 配置远程仓库列表 -->
                <repositories>
                    <!-- 远程仓库的配置信息 -->
                    <repository>
                        <!-- 远程仓库唯一标识-->
                        <id>nexus</id>
                        <!-- 远程仓库名称 -->
                        <name>nexus for develop</name>
                        <!-- 远程仓库URL -->
                        <url>http://192.168.1.8:8080/nexus/content/groups/public/</url>
                        <layout>default</layout>
                        <releases>
                            <!--是否使用这个资源库下载这种类型的构件 默认值:true-->
                            <enabled>true</enabled>
                            <!--指定下载更新的频率。这里的选项是:always(一直),daily(每日,默认值),interval:X(这里X是指分钟),或者never(从不)。 -->
                      <updatePolicy>daily</updatePolicy>
                      <!--当Maven验证构件校验文件失败时该怎么做fail(失败)或者warn(告警)。-->
                      <checksumPolicy>warn</checksumPolicy>
                        </releases>
                        <snapshots>
                            <!--是否使用这个资源库下载这种类型的构件 默认值:true-->
                            <enabled>true</enabled>
                            <!--指定下载更新的频率。这里的选项是:always(一直),daily(每日,默认值),interval:X(这里X是指分钟),或者never(从不)。 -->
                      <updatePolicy>daily</updatePolicy>
                      <!--当Maven验证构件校验文件失败时该怎么做fail(失败)或者warn(告警)。-->
                      <checksumPolicy>warn</checksumPolicy>
                        </snapshots>
                    </repository>
                </repositories>
                <pluginRepositories>
                    <pluginRepository>
                        <id>nexus</id>
                        <name>local nexus</name>
                        <url>http://192.168.1.8:8080/nexus/content/groups/public</url>
                        <layout>default</layout>
                        <releases>
                            <enabled>true</enabled>
                        </releases>
                        <snapshots>
                            <enabled>true</enabled>
                        </snapshots>
                    </pluginRepository>
                </pluginRepositories>
            </profile>
     
      </profiles>
     
      <!-- 指定被激活的配置文件-->
      <activeProfiles>
        <activeProfile>repo-dev</activeProfile>
      </activeProfiles>
    </settings>

    (1)各个节点的注释都有,可以看一下

    (2)在配置了mirrorof的镜像后,并且mirrorof的规则是*的话,后面的profiles的repositories节点是没有意义的,可以去掉,但是profile节点还可以配置其他很多东西,所以不影响此节点下其他的除了repositories之外ide节点的东西

    (3)maven的镜像从指定mirrorof的地址下载资源后,如果此地址没有该资源,不会去maven的超级pom下的中央仓库去下载资源,此时的nexus私服配置的有中央仓库地址,此时nexus私服会去中央仓库下,如果还没有,则要另外从网上下载,并上传到私服下

    (4)maven的超级pom所在位置:D:mavenapache-maven-3.3.1libmaven-model-builder-3.3.1.jar,打开这个jar包:orgapachemavenmodel**.pom

    (5)maven发布项目到私服上,需要配置私服节点吗,需要验证?

  • 相关阅读:
    Siege 3.0 正式版发布,压力测试工具
    Pomm 1.1.2 发布,专为 PG 设计的 ORM 框架
    Whonix 0.5.6 发布,匿名通用操作系统
    国内开源 java cms,Jspxcms 2.0 发布
    EZNamespaceExtensions.Net v2013增加对上下文菜单、缩略图、图标、属性表的支持
    GNU Guile 2.0.9 发布,Scheme 实现
    jdao 1.0.4 发布 轻量级的orm工具包
    OpenSearchServer 1.4 RC4 发布
    Percona Server for MySQL 5.5.3030.2
    Samba 4.0.5 发布
  • 原文地址:https://www.cnblogs.com/li1111xin/p/4777965.html
Copyright © 2011-2022 走看看