• maven学习(一)setting.xml配置文件详解


      maven环境搭建:

        1.官网下载zip包,解压至任意目录(如:E:wlyapache-maven-3.2.5)
        2.环境变量MAVEN_HOME(E:wlyapache-maven-3.2.5)、path追加"%MAVEN_HOME%in;"
        3.cmd命令行mvn -v,正常输出maven版本代表OK

      settings.xml详解:

      操作setting.xml之前,先了解一下maven是基于用户的。默认全局的配置文件"maven安装目录/conf/settings.xml",可以拷贝"settings.xml"放到"用户目录/.m2"/下,此时用户目录下的settings.xml会覆盖原配置。

      接下来我们看一下settings.xml中都能配置什么?下面内容以3.3.9版本为例:

      官方文档传送门:http://maven.apache.org/ref/3.3.9/maven-settings/settings.html

    配置大纲:

    localRepository     本地仓库,默认在用户/.m2/repository
    
    interactiveMode     交互模式,默认为true
    usePluginRegistry   是否使用plugin-registry.xml文件管理插件版本,默认为false offline        是否使用离线模式,默认为false proxies/proxy*    配置代理,通常给无法直接访问中央仓库的用户使用 servers/server*   服务器身份认证,比如当需要deploy一个包到远程仓库时,需要权限验证。此配置属于公用配置,且配置在pom.xml中不太安全,通常与
    <distributionManagement><id>匹配 mirrors/mirror*   镜像配置,会覆盖远程仓库配置 profiles/profile* 用于配置不同环境的差异文件 activeProfiles/activeProfile* 手动激活的默认差异文件 pluginGroups/pluginGroup* 当插件的groupId没有显式提供,从此插件的group中寻找需要的插件

    详细配置说明:

    代理(proxies/proxy*):

    <proxies>
            <proxy>
                <!-- 代理标识 -->
                <id>testProxy</id>
                <!-- 是否激活,默认是true -->
                <active>true</active>
                <!-- 代理协议 -->
                <protocol>http</protocol>
                <!-- 用户名 -->
                <username>wang</username>
                <!-- 密码 -->
                <password>123</password>
                <!-- 端口 -->
                <port>8099</port>
                <!-- 主机 -->
                <host>proxy.xxx.com</host>
                <!-- 不需要代理的主机 -->
                <nonProxyHosts>*.xx1.com|*.xx2.com</nonProxyHosts>
            </proxy>
    </proxies>

    服务器认证(servers/server*):支持用户名/密码,公钥/私钥两种认证方式

    <servers>
            <server>
                <!-- 服务标识 -->
                <id>server1</id>
                <!-- 用户名 -->
                <username>wang</username>
                <!-- 密码 -->
                <password>123</password>
            </server>
            <server>
                <id>server2</id>
                <privateKey>wang</username>
                <passphrase>456</passphrase>
            </server>
    </servers>

    镜像(mirrors/mirror*):用<mirrorOf>配置覆盖一个或者多个仓库的配置。

    <mirrorOf>元素:

      * = everything

      external:* = everything not on the localhost and not file based.

      repo,repo1 = repo or repo1

      *,!repo1 = everything except repo1

    优点:1.速度快 2.使用自定义镜像可管控

    <mirrors>
            <mirror>  
                <!-- 镜像id,唯一标识 -->      
                <id>central-mirror</id>
                <!-- 镜像名称 -->
                <name>Maven China Mirror</name>
                <!-- 镜像地址 -->        
                <url>http://search.maven.org/#browse</url>    
                <!-- 这个是谁的镜像,覆盖哪个仓库的配置 -->    
                <mirrorOf>central</mirrorOf>        
            </mirror> 
    </mirrors>

    环境差异文件(profiles/profile*):

    <profiles>
            <!--通过某些条件匹配来激活不同<profile>,如jdk、os、属性和属性值等等-->
            <profile>
                <!-- 唯一标识id -->
                <id>jdk-1.6</id>
                <!-- 激活条件 -->
                <activation>
                    <jdk>1.6</jdk>
                </activation>
                <!-- 键值对属性 -->
                <properties>
                    <property.key>property.value</property.key>
             <!--
                maven支持使用占位符的方式设置或获取值
                1.env:操作系统环境变量
                2.project.x:当前project的属性
                3.setttings.x:对应settings.xml文件的属性
                4.properties文件中的属性(redis.ip=10.11.12.13):redis.ip
                5.x:<properties>中设置的属性
              -->
                    <anykey>${env.path}</anykey>
    </properties>
                <!-- 仓库配置 -->
                <repositories>
                    <repository>   
                        <id>仓库id</id>    
                        <name>仓库名称</name>
                        <url>仓库url</url>
                        <layout>在Maven 2/3中都是default,只有在Maven 1.x中才是legacy,默认也是default</layout>
                        <!-- 发布的稳定版本 -->
                        <releases>
                            <checksumPolicy>当组件校验失败时,warn或fail</checksumPolicy>
                            <enabled>是否使用此库下载组件</enabled>
                            <updatePolicy>当组件在本地不存在时的更新策略:always、daily(default)、interval:xx(in minutes)、never</updatePolicy>
                        </releases>
                        <!-- 快照版本,注释同上 -->
                        <snapshots>
                            <checksumPolicy></checksumPolicy>
                            <enabled></enabled>
                            <updatePolicy></updatePolicy>
                        </snapshots>
                    </repository>
                </repositories>
                <!-- 插件仓库 -->
                <pluginRepositories>
                    <pluginRepository>
                        <!-- 配置与repository类似 -->
                    </pluginRepository>
                </pluginRepositories>
            </profile>
    </profiles>

    激活某个差异文件(activeProfiles/activeProfile*):

    <!-- 指定某个profile生效 -->
    <activeProfiles>
        <activeProfile>对应profile id</activeProfile>
    </activeProfiles>

    当插件groupId没有显示提供,使用此groupId进行查找(pluginGroups/pluginGroup*):

    <pluginGroups>
            <!-- 当插件groupId没有显示提供,使用此groupId查找插件 -->
            <!-- 官网:(Many) List of groupIds to search for a plugin when that plugin groupId is not explicitly provided. -->
            <pluginGroup>org.mortbay.jetty</pluginGroup>
            <pluginGroup>org.codehaus.cargo</pluginGroup>
    </pluginGroups>
  • 相关阅读:
    高可靠JAVA项目
    C语言JS引擎
    星际争霸,FF反作弊对战平台
    【转】ffluos编译
    〓经典文字武侠游戏 书剑 书剑江湖自由度超高!公益服!〓
    全局解释器锁GIL
    创建多线程Thread
    线程的简述Thread
    进程池的回调函数callback
    进程池的同步与异步用法Pool
  • 原文地址:https://www.cnblogs.com/douJiangYouTiao888/p/6475761.html
Copyright © 2020-2023  润新知