可能存在的两个地方,前一种设置称为全局设置,后一种设置称为用户设置。若是两个文件都存在,它们的内容将被合并,以用户特定的settings.xml为主。apache
<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>G:\maven</localRepository>
包括三种仓库服务器
仓库读取顺序
步骤 1 - 在本地仓库中搜索,若是找不到,执行步骤 2,若是找到了则执行其余操做。
步骤 2 - 在中央仓库中搜索,若是找不到,而且有一个或多个远程仓库已经设置,则执行步骤 4,若是找到了则下载到本地仓库中以备未来引用。
步骤 3 - 若是远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(没法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,若是找到则下载到本地仓库以备未来引用,不然 Maven 将中止处理并抛出错误(没法找到依赖的文件)网络
访问远程服务器须要的信息ssh
<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>
当以为国外服务器慢的时候,能够用镜像,好比阿里的。镜像的优先级大于仓库。Maven不会聚合镜像,而只是选择第一个匹配。若是但愿提供多个存储库,请使用存储库管理器。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匹配规则以下:布局
代理google
<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>
配置文件,每一个profile由activation, repositories, pluginRepositories和properties组成url
当全部指定的条件都知足时,激活就会发生,尽管不是全部的条件都须要同时知足操作系统
<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> <user.install>${user.home}/our-project</user.install> </properties>
远程仓库集合
<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> <activeProfile>env-test</activeProfile> </activeProfiles>