在Maven的settings.xml中,往往要配置访问远程库所在的服务器的username/password。但是明文的密码总是显得那么扎眼,必欲除之而后快。
Apache Maven项目提供了便捷的密码加密机制,该机制的最近更新时间为2018-03-06。
该机制目前只支持在命令行下的操作,如生成密码的密文。
此外,用户还需要在${user.home}/.m2目录下配置settings-security.xml文件,其中包含:
用以加密其他密码的master password(此处也是密文)
或指向另一个保密文件的完整路径
在该加密机制中有两个概念,一个是master password,即用以加密其他密码的密码,另一个就是实际使用的服务器访问密码password。master password的密文配置在settings-security.xml文件中,而服务器访问密码password的密文就可以大大方方地配置在settings.xml中。具体用法如下:
参考官方文档:http://maven.apache.org/guides/mini/guide-encryption.html
1. 生成Master password的密文
命令行中执行如下命令:
mvn --encrypt-master-password
根据提示输入Master password:
就可以生成密文{G3Fvv9dVzlsHlaZIIqD0Q1jP+v/UjLWox8Ku6mjWGwo=}\
2. 配置${user.home}/.m2/settings-security.xml文件
# cat ~/.m2/settings-security.xml
<settingsSecurity>
<master>{OL3eJQVE6WcHm6LPP8666Ccy1s/g8HN/1sn2BedcM4E=}</master>
</settingsSecurity>
如果settings-security.xml文件被保存到U盘,则配置${user.home}/.m2/settings-security.xml文件如下
<settingsSecurity>
<master>/my_u_volume/my_path/settings-security.xml</master>
</settingsSecurity>
3. 加密访问服务器的密码
命令行中执行如下命令:
mvn --encrypt-password
根据提示输入Password:
就可以生成密文{2WH8+8sDqngHFW02dRJaz15KsDc2jQWwPrYsoF05dPw=}
4. 配置 ~/.m2/settings.xml文件
<?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">
<servers>
<server>
<username>admin</username>
<password>{Zf6k8EnVh5EHL3sen2jBXPDO04XqragJoTSlUn9HNWc=}</password>
<id>central</id>
</server>
<server>
<username>admin</username>
<password>{Zf6k8EnVh5EHL3sen2jBXPDO04XqragJoTSlUn9HNWc=}</password>
<id>snapshots</id>
</server>
</servers>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Aicloud-mvn</name>
<url>http://172.16.5.203:8081/artifactory/Aicloud-mvn</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>Aicloud-mvn</name>
<url>http://172.16.5.203:8081/artifactory/Aicloud-mvn</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Aicloud-mvn</name>
<url>http://172.16.5.203:8081/artifactory/Aicloud-mvn</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>Aicloud-mvn</name>
<url>http://172.16.5.203:8081/artifactory/Aicloud-mvn</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
<mirrors>
<mirror>
<id>hfmaven</id>
<name>hf maven</name>
<url>http://172.16.5.203:8081/artifactory/hf-jcenter-remote/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
阿里Maven镜像
<!-- 阿里云 Maven 镜像 -->
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
maven包下配置属全局配置文件/usr/local/maven/conf/settings.xml,$HOME/.m2/setting.xml是用户配置文件