13

我知道可以对密码进行加密并将加密的数据放入 中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.xmlor settings.xml

谢谢。

ps:我使用的是Maven 2.2.1,但如果需要我也可以使用Maven 3.0。

4

3 回答 3

3

Maven 提供了必要的支持来加密密码settings.xml,并让插件检索它们。参见例如SqlExecMojo.java

插件“只是”必须使用此功能才能对凭据管理更加用户友好。

于 2012-09-11T16:03:21.760 回答
1

https://github.com/echocat/velma

回声猫维尔玛

…是您的 Maven 密码的主密码保护密码安全。这些密码通常存储在 .m2/settings.xml 中,并且可以通过 .m2/settings-security.xml 中的主密码进行保护。但是这种方式仍然很危险,因为每个可以访问您计算机的人都可以访问您的主密码。

也许这就是你正在寻找的。

于 2013-03-27T16:03:15.360 回答
0

最多不,我也只知道你提到的密码加密。所有其他加密必须由插件本身处理。或者通过插件。将加密密钥放在 settings.xml 中并使用properties-plugin从文件(或仅作为灵感来源)和一些库(如jasypt )加载属性来创建自己的加密插件可能是一种解决方案。您可以配置插件来解密和替换哪些属性,并将其绑定到 Maven 生命周期的早期阶段。

我还没有看到像这样可以使用的东西,但它看起来并不太复杂。

Jasypt 也用于与 Spring PropertyPlaceholderconfigurer 相同的目的(加密 .properties 文件中的日期)。

于 2012-09-10T07:14:42.507 回答