共计 4032 个字符,预计需要花费 11 分钟才能阅读完成。
settings.xml
可能存在的两个地方,前一种设置称为全局设置,后一种设置称为用户设置。如果两个文件都存在,它们的内容将被合并,以用户特定的 settings.xml 为主。
- MAVEN 的安装位置:${maven.home}/conf/settings.xml
- 用户的文件夹:${user.home}/.m2/settings.xml
顶级元素
<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
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/><!-- 本地存储库的路径。默认值是 ${user.home}/.m2/repository -->
<interactiveMode/><!-- 如果为 true,说明 Maven 试图与用户进行输入交互。默认值为 true -->
<offline/><!-- 脱机模式下运行,默认为 false。如果无法连接网络,设置为 false -->
<pluginGroups/><!-- 插件组 -->
<servers/><!-- 服务器信息 -->
<mirrors/><!-- 镜像 -->
<proxies/><!-- 代理 -->
<profiles/><!-- 配置文件 -->
<activeProfiles/><!-- 需要激活配置文件 -->
</settings>
localRepository
<localRepository>G:\maven</localRepository>
包括三种仓库
- 本地仓库(local):.m2/respository/
- 中央仓库(central):Maven 社区提供的仓库
- 远程仓库(remote):其他远程仓库
仓库读取顺序
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)
servers
访问远程服务器需要的信息
<servers>
<server>
<id>server001</id><!-- 这是服务器的 ID(而不是登录的用户的 ID),它与 Maven 试图连接的存储库 / 镜像的 ID 元素相匹配 -->
<username>my_login</username><!-- 验证此服务器所需的登录名 -->
<password>my_password</password><!-- 验证此服务器所需的密码 -->
<privateKey>${user.home}/.ssh/id_dsa</privateKey><!-- 鉴权时使用的私钥位置 -->
<passphrase>some_passphrase</passphrase><!-- 鉴权时使用的私钥 -->
<filePermissions>664</filePermissions><!-- 在部署时创建存储库文件时使用的权限 -->
<directoryPermissions>775</directoryPermissions><!-- 在部署时创建存储库目录时使用的权限 -->
<configuration></configuration><!-- 其他配置 -->
</server>
</servers>
mirrors
当觉得国外服务器慢的时候,可以用镜像,比如阿里的。镜像的优先级大于仓库。Maven 不会聚合镜像,而只是选择第一个匹配。如果希望提供多个存储库,请使用存储库管理器。
<mirrors>
<mirror>
<id>planetmirror.com</id><!-- 镜像的 id,如果与 server 的 id 一样,说明用该 server 的配置信息连接此镜像 -->
<name>PlanetMirror Australia</name><!-- 镜像的名称 -->
<url>http://downloads.planetmirror.com/pub/maven2</url><!-- 镜像的地址 -->
<mirrorOf>central</mirrorOf><!-- 被镜像存储库的服务器 ID,这必须与镜像 id 不匹配。-->
</mirror>
</mirrors>
根据 mirrorOf 匹配规则如下:
- = 匹配所有远程仓库
- external:* = 匹配除 localhost、使用 file:// 协议外的所有远程仓库
- repo,repo1:* = 匹配仓库 repo1 和 repo2,central 代表替换中央仓库
- ,!repo1: = 匹配所有远程仓库, 但不包括 repo1
Proxies
代理
<proxies>
<proxy>
<id>myproxy</id><!-- 代理的 id -->
<active>true</active><!-- true 说明这个代理是激活的 -->
<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
配置文件,每个 profile 由 activation, repositories, pluginRepositories 和 properties 组成
activation
当所有指定的条件都满足时,激活就会发生,尽管不是所有的条件都需要同时满足
<activation>
<activeByDefault>false</activeByDefault><!-- 是否激活 -->
<jdk>1.5</jdk><!-- JDK 检测 -->
<os><!-- 操作系统检测 -->
<name>Windows XP</name><!-- 操作系统 -->
<family>Windows</family><!-- 操作系统家族 -->
<arch>x86</arch><!-- 操作系统 -->
<version>5.1.2600</version><!-- 操作系统版本 -->
</os>
<property><!-- 如果 Maven 检测到对应的 name 和 value,则配置文件将被激活 -->
<name>mavenVersion</name>
<value>2.0.3</value>
</property>
<file><!-- 根据文件存在 / 不存在激活 profile -->
<!-- 根据文件存在激活 profile -->
<exists>${basedir}/file2.properties</exists>
<!-- 根据文件不存在激活 profile -->
<missing>${basedir}/file1.properties</missing>
</file>
</activation>
properties
值占位符
<properties>
<user.install>${user.home}/our-project</user.install>
</properties>
repositories
远程仓库集合
<repositories>
<repository>
<id>codehausSnapshots</id><!-- 远程仓库 id -->
<name>Codehaus Snapshots</name><!-- 远程仓库名称 -->
<releases>
<enabled>false</enabled><!-- 是否提供下载 -->
<updatePolicy>always</updatePolicy><!-- 构建时检查频率,always 总是, daily (default)一天只检查一次, interval:X 距离上次多少分钟才检查 , never 从不检查 -->
<checksumPolicy>warn</checksumPolicy> <!-- Maven 验证 artifact 校验文件缺少或不正确采取的策略:ignore 忽略, fail 失败,warn 警告 -->
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<url>http://snapshots.maven.codehaus.org/maven2</url><!-- 远程仓库地址 -->
<layout>default</layout><!-- default or legacy,布局:默认还是遗留 -->
</repository>
</repositories>
<pluginRepositories>
ActiveProfiles
直接激活配置
<activeProfiles>
<activeProfile>env-test</activeProfile>
</activeProfiles>
正文完