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

摘要:
Maven环境构建:1.从官方网站下载zip包并将其解压缩到任何目录2.环境变量Maven_HOME和路径追加“%Maven_HOME%in;”3.cmd命令行mvn-v。maven版本的正常输出表示OK设置XML详细信息:操作设置在XML之前,让我们了解maven是基于用户的。默认全局配置文件“maven installation directory/conf/settings.xml”可以复制到“settings.xml”中,并放在“user directory/.m2”/下。此时,用户目录the xml中的设置将覆盖原始配置。接下来,让我们看看可以在设置中配置什么。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>

免责声明:文章转载自《maven学习(一)setting.xml配置文件详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇手机页面尺寸设置(一)webpack之代码分离下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

iOS开发(Swift):创建UINavigationView的三种方法

,表示window值我们会赋值。然后创建一个根视图控制器rootViewController,一个导航控制器navigationController。)-˃Bool{//Overridepointforcustomizationafterapplicationlaunch.window=UIWindowwindow.makeKeyAndVisible()ro...

java报表实现excel一样冻结表头的功能

增加了几个新的指标,后台sql改了,拿过来只须在一个dao类中修改就足够了,可恨的是客户又提出来改报表表样,加个类似excel冻结表头的功能。...

Spark 数据读取与保存(输入、输出)

SaveAsTextFile(字符串)scala&gt:importsscala.util.parsing.json.json(2)将json文件上载到HDFS[lxl@hadoop102spark]$hadoopfs投入。/示例/src/main/resources/people。json/(3)读取文件scala&gt;...

面试了一个 31岁的iOS开发者,思绪万千,30岁以上的程序员还有哪些出路?

前言之前HR给了我一份简历,刚看到简历的第一眼,31岁?31岁,iOS开发工程师,工作经历7年,5年左右都在外包公司,2年左右在创业公司。iOS开发工程师这块,还是很少遇到30岁以上的开发,正好,来了一个30岁的开发,说实话,对我来说,还是蛮期待的,希望对我有所启示。这样的过程持续了半个小时那么年过350岁的程序员还有出路吗?作为一个8年的iOS开发,而且几...

PowerQuery清理非文件名字符(清除指定列表中的所有字符)

在左侧导航窗格的空白区域右击,依次找到空白查询项接下来的思路是:遍历列表SearchList中的所有项,依次清理Data表中所有想要处理的列。第三个参数是一个函数:它告诉List.Accumulate函数,在每一次使用SearchList中某一项操作Data表时,其操作的方式是如何的。...

mac格式化重装系统

4.选择“重新安装MacOS”5.按照以下步骤中的提示进行操作。安装需要半个多小时。在此期间无法断开网络,否则需要重新安装...