Maven:从 pom.xml 中的 settings.xml 读取加密密码
Maven: Read encrypted password from settings.xml in pom.xml
我正在尝试在 settings.xml 中使用加密密码。我的 pom.xml 中有一个连接到数据库的插件,使用 sql-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.4</version>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.5.0</version>
</dependency>
</dependencies>
<configuration>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@ip.com:1521:SID</url>
<username>someUser</username>
<password>{JucQpWS78Q0HW+3ZS/FCCGHQpwbJ8ySl2Io/ILJqf88=}</password>
</configuration>
<executions>
<execution>
<id>update-configuration</id>
<phase>package</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<autocommit>false</autocommit>
<srcFiles>
<srcFile>src/main/sql/update_sim_configuration.sql</srcFile>
</srcFiles>
</configuration>
</execution>
</executions>
</plugin>
如果我将密码作为明文输入我的 pom.xml,它可以正常工作,我想从我的 settings.xml 中读取此密码,密码以这种方式加密:
mvn -ep the_password
我有 settings.xml
...
<server>
<id>rms13-db-dev</id>
<username>user</username>
<password>{JucQpWS78Q0HW+3ZS/FCCGHQpwbJ8ySl2Io/ILJqf88=}</password>
</server>
...
我想 'read' 以某种方式解码 'rms13-db-dev' 中的 'password',我该如何实现?或者如果您有其他版本可以实现此目的。
要实现此功能,您需要 encrypt a password using Maven tools and then configure the sql-maven-plugin
to use it。这在插件的 1.4 版中不受支持,但在 1.5 版中是可能的。
使用命令创建主密码
mvn --encrypt-master-password
从 3.2.1 开始,Maven 将提示您输入密码。完成后,创建一个名为 ~/.m2/settings-security.xml
的文件,内容为
<settingsSecurity>
<master><!-- result of above command --></master>
</settingsSecurity>
使用命令
加密您的密码
mvn --encrypt-password
和之前一样,Maven会提示你输入密码。然后在您的 Maven 设置中(~/.m2/settings.xml
,如果文件不存在则创建该文件),让内容
<settings>
...
<servers>
...
<server>
<id>my.server</id>
<username><!-- your DB username --></username>
<password><!-- the encrypted password --></password>
</server>
...
</servers>
...
</settings>
使用服务器 ID 的 settingsKey
属性配置 sql-maven-plugin
,在本例中为 my.server
。你需要使用1.5版本的插件。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version> <!-- 1.5 required -->
<configuration>
<settingsKey>my.server</settingsKey> <!-- id of server here -->
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@ip.com:1521:SID</url>
<!-- username and password are not mentioned anymore -->
</configuration>
</plugin>
如果任何加密密码包含花括号,you'll need to escape them 通过 \{
和 \}
.
- 在 pom.xml 中,删除 user/password 并改为指定
settingsKey
,如 MOJO documentation 中所述。
- 在 settings.xml 中,创建一个新的
server
条目,其中 id
等于先前的 settingsKey
值,如前所述here.
- 创建settings-security.xml并加密服务器密码standard way。该文件应在以下路径中创建:
${user.home}/.m2/settings-security.xml
请参见下面的示例:
<settingsSecurity>
<master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>
我正在尝试在 settings.xml 中使用加密密码。我的 pom.xml 中有一个连接到数据库的插件,使用 sql-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.4</version>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.5.0</version>
</dependency>
</dependencies>
<configuration>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@ip.com:1521:SID</url>
<username>someUser</username>
<password>{JucQpWS78Q0HW+3ZS/FCCGHQpwbJ8ySl2Io/ILJqf88=}</password>
</configuration>
<executions>
<execution>
<id>update-configuration</id>
<phase>package</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<autocommit>false</autocommit>
<srcFiles>
<srcFile>src/main/sql/update_sim_configuration.sql</srcFile>
</srcFiles>
</configuration>
</execution>
</executions>
</plugin>
如果我将密码作为明文输入我的 pom.xml,它可以正常工作,我想从我的 settings.xml 中读取此密码,密码以这种方式加密:
mvn -ep the_password
我有 settings.xml
...
<server>
<id>rms13-db-dev</id>
<username>user</username>
<password>{JucQpWS78Q0HW+3ZS/FCCGHQpwbJ8ySl2Io/ILJqf88=}</password>
</server>
...
我想 'read' 以某种方式解码 'rms13-db-dev' 中的 'password',我该如何实现?或者如果您有其他版本可以实现此目的。
要实现此功能,您需要 encrypt a password using Maven tools and then configure the sql-maven-plugin
to use it。这在插件的 1.4 版中不受支持,但在 1.5 版中是可能的。
使用命令创建主密码
mvn --encrypt-master-password
从 3.2.1 开始,Maven 将提示您输入密码。完成后,创建一个名为
~/.m2/settings-security.xml
的文件,内容为<settingsSecurity> <master><!-- result of above command --></master> </settingsSecurity>
使用命令
加密您的密码mvn --encrypt-password
和之前一样,Maven会提示你输入密码。然后在您的 Maven 设置中(
~/.m2/settings.xml
,如果文件不存在则创建该文件),让内容<settings> ... <servers> ... <server> <id>my.server</id> <username><!-- your DB username --></username> <password><!-- the encrypted password --></password> </server> ... </servers> ... </settings>
使用服务器 ID 的
settingsKey
属性配置sql-maven-plugin
,在本例中为my.server
。你需要使用1.5版本的插件。<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sql-maven-plugin</artifactId> <version>1.5</version> <!-- 1.5 required --> <configuration> <settingsKey>my.server</settingsKey> <!-- id of server here --> <driver>oracle.jdbc.driver.OracleDriver</driver> <url>jdbc:oracle:thin:@ip.com:1521:SID</url> <!-- username and password are not mentioned anymore --> </configuration> </plugin>
如果任何加密密码包含花括号,you'll need to escape them 通过 \{
和 \}
.
- 在 pom.xml 中,删除 user/password 并改为指定
settingsKey
,如 MOJO documentation 中所述。 - 在 settings.xml 中,创建一个新的
server
条目,其中id
等于先前的settingsKey
值,如前所述here. - 创建settings-security.xml并加密服务器密码standard way。该文件应在以下路径中创建:
${user.home}/.m2/settings-security.xml
请参见下面的示例:
<settingsSecurity>
<master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>