Подтвердить что ты не робот

Использовать зашифрованные данные в Maven pom

Я знаю, что можно зашифровать пароль и поместить зашифрованные данные в 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.

4b9b3361

Ответ 1

Maven предоставил необходимую поддержку для шифрования паролей в settings.xml и для плагинов для их получения. См. Например SqlExecMojo.java.

Плагины "просто" должны использовать эту функцию для более удобного управления учетными данными.

Ответ 2

https://github.com/echocat/velma

echocat Velma

... защищенный паролем пароль, защищенный паролем, для ваших паролей maven. Эти пароли обычно хранятся в файле .m2/settings.xml и могут быть защищены главным паролем в .m2/settings-security.xml. Но этот способ по-прежнему опасен, потому что каждый человек, имеющий доступ к вашему компьютеру, имеет доступ к вашему Мастер-паролю.

Возможно, это то, что вы ищете.

Ответ 3

до тех пор, пока я не знаю только о шифровании паролей, о котором вы говорили. Все другое шифрование должно обрабатываться самим плагином. Или плагином. Это может быть решение поместить ключи шифрования в settings.xml и использовать свойства-плагин для загрузки свойств из файла (или так же, как и источник вдохновения) и некоторую библиотеку, например jasypt, чтобы создать свой собственный плагин шифрования. Вы можете настроить плагин, какие свойства дешифровать и заменить и привязать к ранней фазе жизненного цикла maven.

Я не видел что-то готовое к использованию, но это выглядит не слишком сложно.

Jasypt также используется для той же цели с Spring PropertyPlaceholderconfigurer (зашифровать дату в файлах .properties).