我知道它是possible to encrypt a password并将加密数据放在settings.xml
中,以便Maven可以访问远程服务器(用于部署等)。
但是,在我的情况下,密码是第三方插件配置中的参数。
通常,此插件的pom.xml
配置如下所示:
<build>
<plugins>
<plugin>
<groupId>xxx</groupId>
<artifactId>maven-xxx-plugin</artifactId>
...
<configuration>
<serverAddress>http://myserver</serverAddress>
<port>4242</port>
<username>unicorn</username>
<password>thePassword</password>
...
但我不喜欢在pom.xml
中以纯文本格式设置密码。所以我尝试将其设置为属性(<password>${encrypted.password}</password>
)并使用settings.xml
命令在mvn --encrypt-password thePassword
文件中设置加密密码:
<profiles>
<profile>
<id>myprofile</id>
<properties>
<!-- Encrypted passwords -->
<encrypted.password>{dJXVRKwRiY8HqzhGecHd/MYju/aIEmMT8cnE6MY53uPNr0ro/CAsXSLlgzEjxYeU}</encrypted.password>
</properties>
不幸的是,这不起作用(我怀疑该插件使用加密密码作为“清除”密码,并且不会尝试解密它。)
有没有办法让它发挥作用?如果没有,有什么可以避免在pom.xml
或settings.xml
中放入纯文本密码?
感谢。
ps:我正在使用Maven 2.2.1,但如果需要,我也可以使用Maven 3.0。
答案 0 :(得分:2)
Maven为settings.xml
中的密码加密提供了必要的支持,并为插件提供了检索密码的必要支持。请参阅示例SqlExecMojo.java。
插件“只是”必须使用此功能,以便在凭据管理方面更加用户友好。
答案 1 :(得分:1)
https://github.com/echocat/velma
echocat Velma
...是您的maven密码的主密码保护密码。这些密码通常存储在.m2 / settings.xml中,可以通过.m2 / settings-security.xml中的主密码进行保护。但这种方式仍然很危险,因为每个有权访问您计算机的人都可以访问您的主密码。
也许这就是你要找的东西。
答案 2 :(得分:0)
最多不,我也只知道您提到的密码加密。所有其他加密必须由插件本身处理。或者通过插件。将加密密钥放在settings.xml中并使用properties-plugin加载文件中的属性(或仅作为灵感源)和某些库(如jasypt)来创建自己的加密可能是一种解决方案。插入。您可以为插件配置要解密和替换的属性,并将其绑定到maven生命周期的早期阶段。
我还没有看到像这样的东西,但看起来并不太复杂。
Jasypt也用于Spring PropertyPlaceholderconfigurer(在.properties文件中加密日期)。