maven配置解析和最佳配置
- 2019 年 10 月 30 日
- 筆記
最近公司更换了软件源,发现之前的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>