ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Maven配置解读

2022-01-24 10:58:29  阅读:163  来源: 互联网

标签:xml 解读 central settings 配置 Maven http maven


1. settings.xml的作用

它是用来设置Maven参数的配置文件。并且,settings.xml是Maven的全局配置文件。settings.xml中包含类似本地仓库、远程仓库和联网使用的代理信息等配置。

2. maven/conf/settings.xml & 用户目录/.m2/settings.xml

Maven目录的conf中的settings.xml和用户目录的.m2子目录下面的settings.xml的同时存在的时候,用户目录下面的settings.xml中的定义会覆盖Maven/conf目录下面的settings.xml中的定义。用户目录下的settings.xml不存在则可以自己拷贝一份Maven自带的配置后修改成自定义配置后自动覆盖Maven配置。

3. 配置示例及说明

<?xml version="1.0" encoding="UTF-8"?>
<!-- 声明范式 -->
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <!-- 本地仓库路径(默认注掉,使用用户目录的.m2目录) -->
    <localRepository>D:\repository</localRepository>
    <!-- 表示maven是否需要和用户交互以获得输入,如果maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。 -->
    <interactiveMode>true</interactiveMode>
    <!-- 在Maven进行项目编译和部署等操作时是否允许Maven进行联网来下载所需要的信息,默认false -->
    <offline>false</offline>
    <!-- maven是否需要使用plugin-registry.xml文件来管理插件版本 -->
    <usePluginRegistry>false</usePluginRegistry>
    <!-- 当我们使用某个插件,并且没有在命令行为其提供组织Id(groupId)的时候,Maven就会使用该列表,默认包含:org.apache.maven.plugins和org.codehaus.mojo -->
    <pluginGroups>
        <!--plugin的组织Id(groupId) -->
        <pluginGroup>org.codehaus.mojo</pluginGroup>
    </pluginGroups>
    <!-- 配置服务端 -->
    <servers>
        <!-- server元素包含服务器配置信息,默认注掉 -->
        <server>
            <!-- server id -->
            <id>releases</id>
            <!-- 用户名 -->
            <username>admin</username>
            <!-- 密码 -->
            <password>123456</password>
            <!-- 鉴权时使用的私钥位置 -->
            <privateKey>C:\Users\Administrator\.m2\key</privateKey>
            <!-- 鉴权时使用的私钥密码。 -->
            <passphrase>some_passphrase</passphrase>
            <!-- Linux系统中文件被创建时的权限 -->
            <filePermissions>664</filePermissions>
            <!-- Linux系统中目录被创建时的权限。 -->
            <directoryPermissions>775</directoryPermissions>
        </server>
    </servers>
    <!-- mirrors定义一系列的远程仓库的镜像 -->
    <mirrors>
        <!-- Maven中央仓库地址 -->
        <!-- 搜索地址:https://mvnrepository.com/ 或 https://search.maven.org/ -->
        <mirror>
            <!-- id:镜像唯一标识 -->
            <id>central</id>
            <!-- 镜像名称 -->
            <name>Maven Repository Switchboard</name>
            <!-- 该镜像的URL -->
            <url>https://repo1.maven.org/maven2/</url>
            <!-- 或者使用地址2:<url>http://repo.maven.apache.org/maven2</url> -->
            <!-- mirrorOf:被镜像的服务器的id,central表示代替官方的中央库 -->
            <mirrorOf>central</mirrorOf>
        </mirror>
        <!-- 阿里仓库 -->
        <!-- 搜索地址:https://developer.aliyun.com/mvn/guide -->
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <!-- 腾讯云Maven镜像 -->
        <!-- 地址:https://mirrors.tencent.com/help/maven.html -->
        <mirror>
            <id>nexus-tencentyun</id>
            <name>Nexus tencentyun</name>
            <url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
        <!-- 华为Maven镜像 -->
        <mirror>
            <id>huaweicloud</id>
            <name>mirror from maven huaweicloud</name>
            <url>https://mirror.huaweicloud.com/repository/maven/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <!-- repo2镜像 -->
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
        <!-- ibiblio镜像 -->
        <mirror>
            <id>ibiblio</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
        </mirror>
        <!-- JBoos镜像 -->
        <mirror>
            <id>jboss-public-repository-group</id>
            <mirrorOf>central</mirrorOf>
            <name>JBoss Public Repository Group</name>
            <url>http://repository.jboss.org/nexus/content/groups/public</url>
        </mirror>
        <!-- 谷歌镜像 -->
        <mirror>
            <id>google-maven-central</id>
            <name>Google Maven Central</name>
            <url>https://maven-central.storage.googleapis.com</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <!-- 中央仓库在中国的镜像 -->
        <mirror>
            <id>maven.net.cn</id>
            <name>oneof the central mirrors in china</name>
            <url>http://maven.net.cn/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <!-- 阿里云提供的镜像 -->
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
    <!-- 代理配置 -->
    <proxies>
        <proxy>
            <!-- 代理id -->
            <id>xxx</id>
            <!-- 代理是否激活 -->
            <active>true</active>
            <!-- 代理的协议。 协议://主机名:端口 -->
            <protocol>http</protocol>
            <!-- 代理的主机名。协议://主机名:端口 -->
            <host>127.0.0.1</host>
            <!-- 代理的端口。协议://主机名:端口 -->
            <port>8765</port>
            <!-- 代理的用户名 -->
            <username>admin</username>
            <!-- 代理的密码 -->
            <password>123456</password>
            <!-- 不该被代理的主机名列表。该列表的分隔符由代理服务器指定,常见的是竖杠或逗号等。 -->
            <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
        </proxy>
    </proxies>
    <!-- profiles:根据环境参数来调整构建配置的列表 -->
    <!--
     settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。
     它包含了id、activation、repositories、pluginRepositories和 properties元素。
     这里的profile元素只包含这五个子元素是因为这里只关心构建系统这个整体(这正是settings.xml文件的角色定位),
     而非单独的项目对象模型设置。如果一个settings.xml中的profile被激活,
     它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。
     当所有的约束条件都满足的时候就会激活这个profile。
     -->
    <profiles>
        <profile>
            <!-- profile id -->
            <id>test</id>
            <!-- 扩展属性列表 -->
            <properties>

            </properties>
            <!-- 自动触发profile的条件逻辑 -->
            <activation>
                <!-- profile默认是否激活的标识 -->
                <activeByDefault>false</activeByDefault>
                <!-- 当匹配的jdk被检测到 -->
                <jdk>1.8</jdk>
                <os>
                    <!-- 激活profile的操作系统的名字 -->
                    <name>Windows 10</name>
                    <!-- 激活profile的操作系统所属家族(如 'windows') -->
                    <family>Windows</family>
                    <!-- 激活profile的操作系统体系结构 -->
                    <arch>x64</arch>
                    <!-- 激活profile的操作系统版本 -->
                    <version>19042.1466</version>
                </os>
                <!--
                    property:如果Maven检测到某一个属性(其值可以在POM中通过${name}引用),
                    其拥有对应的name = 值,Profile就会被激活。
                    如果值字段是空的,那么存在属性名称字段就会激活profile,
                    否则按区分大小写方式匹配属性值字段
                -->
                <property>
                    <name>mavenVersion</name>
                    <value>2.0.3</value>
                </property>
                <!--
                    提供一个文件名,通过检测该文件的存在或不存在来激活profile。
                    missing检查文件是否存在,如果不存在则激活profile。
                    另一方面,exists则会检查文件是否存在,如果存在则激活profile
                -->
                <file>
                    <exists>${basedir}/file2.properties</exists>
                    <missing>${basedir}/file1.properties</missing>
                </file>
            </activation>
            <!-- repositories:远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目 -->
            <repositories>
                <repository>
                    <id>central</id>
                    <name>libs-release</name>
                    <url>http://127.0.0.1/artifactory/libs-release</url>
                    <!-- 处理远程仓库里快照版本的下载 -->
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <!-- 插件远程仓库列表 -->
            <pluginRepositories>
                <pluginRepository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>central</id>
                    <name>plugins</name>
                    <url>http://127.0.0.1/artifactory/plugins</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <!-- 手动激活profiles的列表 -->
        <activeProfile>test</activeProfile>
    </activeProfiles>
</settings>

标签:xml,解读,central,settings,配置,Maven,http,maven
来源: https://blog.csdn.net/JohnGene/article/details/122661011

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有