最近公司更换了软件源,发现之前的maven的配置存在一些问题,特别是mirrors和server的使用。 本文就maven的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">
<!-- 本地仓库(建议放在非C盘) -->
<localRepository/>
<!-- 交互模式,默认值为true,如果为false,则会在配置时使用默认值 -->
<interactiveMode/>
<!-- 表示maven是否需要在离线模式下运行: 当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。 -->
<offline/>
<!-- 当插件的组织id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。默认情况下该列表包含了org.apache.maven.plugins和org.codehaus.mojo -->
<pluginGroups/>
<!-- 网络代理配置 -->
<proxies/>
<!-- 仓库的授权信息:支持username&password, privateKey&passphrase -->
<servers/>
<!-- 仓库的镜像 -->
<mirrors/>
<!-- 根据环境参数来调整构建配置的列表 -->
<profiles />
<!-- 手动激活profiles的列表,按照profile被应用的顺序定义activeProfile -->
<activeProfiles/>
</settings>
mirrors vs servers
- mirros就是当要访问指定仓库时,实际上访问镜像仓库(一般用在私建中央仓库代理,提高效率,或者使用国内的仓库镜像,比如aliyun的镜像)
- server就是实际仓库配置
配置示例
<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>E:\m2_repository</localRepository>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers>
<server>
<id>tenmao-release</id>
<username>tenmao</username>
<password>123456</password>
</server>
<server>
<id>tenmao-snapshot</id>
<username>tenmao</username>
<password>123456</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>tenmao-release</id>
<url>https://mirrors.tenmao.com/repository/maven/tenmao_release</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>tenmao-snapshot</id>
<url>https://mirrors.tenmao.com/repository/maven/tenmao_snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<proxies>
<!--代理元素包含配置代理时需要的信息 -->
<proxy>
<!--代理的唯一定义符,用来区分不同的代理元素。 -->
<id>myproxy</id>
<!--该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。 -->
<active>true</active>
<!--代理的协议。 协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<protocol>http</protocol>
<!--代理的主机名。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<host>web-proxy.tenmao.com</host>
<!--代理的端口。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
<port>8080</port>
<!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。 -->
<nonProxyHosts>*.oa.com|192.168.58.*|10.*|mirrors.tenmao.com</nonProxyHosts>
</proxy>
</proxies>
<activeProfiles/>
</settings>
注意事项
- 代理中多个跳过代理域名使用|隔开:
<nonProxyHosts>*.oa.com|192.*|10.*</nonProxyHosts>
网友评论