Ответ 1
Maven предоставил необходимую поддержку для шифрования паролей в settings.xml
и для плагинов для их получения. См. Например SqlExecMojo.java.
Плагины "просто" должны использовать эту функцию для более удобного управления учетными данными.
Я знаю, что можно зашифровать пароль и поместить зашифрованные данные в 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.
Maven предоставил необходимую поддержку для шифрования паролей в settings.xml
и для плагинов для их получения. См. Например SqlExecMojo.java.
Плагины "просто" должны использовать эту функцию для более удобного управления учетными данными.
https://github.com/echocat/velma
echocat Velma
... защищенный паролем пароль, защищенный паролем, для ваших паролей maven. Эти пароли обычно хранятся в файле .m2/settings.xml и могут быть защищены главным паролем в .m2/settings-security.xml. Но этот способ по-прежнему опасен, потому что каждый человек, имеющий доступ к вашему компьютеру, имеет доступ к вашему Мастер-паролю.
Возможно, это то, что вы ищете.
до тех пор, пока я не знаю только о шифровании паролей, о котором вы говорили. Все другое шифрование должно обрабатываться самим плагином. Или плагином. Это может быть решение поместить ключи шифрования в settings.xml и использовать свойства-плагин для загрузки свойств из файла (или так же, как и источник вдохновения) и некоторую библиотеку, например jasypt, чтобы создать свой собственный плагин шифрования. Вы можете настроить плагин, какие свойства дешифровать и заменить и привязать к ранней фазе жизненного цикла maven.
Я не видел что-то готовое к использованию, но это выглядит не слишком сложно.
Jasypt также используется для той же цели с Spring PropertyPlaceholderconfigurer (зашифровать дату в файлах .properties).