3

我正在尝试在我的 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>
...

我想以某种方式从“rms13-db-dev”中“读取”解码“密码”,我该如何实现?或者如果您有替代版本来实现这一点。

4

2 回答 2

6

为此,您需要使用 Maven 工具加密密码,然后配置sql-maven-plugin使用它。这在插件的 1.4 版本中不受支持,但在 1.5 版本中是可能的。

  1. 使用命令创建主密码

    mvn --encrypt-master-password
    

    从 3.2.1 开始,Maven 会提示你输入密码。一旦你这样做了,创建一个名为~/.m2/settings-security.xml内容的文件

    <settingsSecurity>
      <master><!-- result of above command --></master>
    </settingsSecurity>
    
  2. 使用命令加密您的密码

    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>
    
  3. sql-maven-plugin将您的属性配置settingsKey为您的服务器 id,在本例中为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>
    

如果任何加密密码包含花括号,您需要使用\{和来转义它们\}

于 2016-03-02T22:03:42.603 回答
2
  1. pom.xml中,删除用户/密码,而是settingsKey按照 MOJO文档中的说明指定 a 。
  2. settings.xml 中,创建一个等于先前值的新server条目,如此所述。idsettingsKey
  3. 创建一个settings-security.xml并以标准方式加密服务器密码。该文件应在以下路径中创建:${user.home}/.m2/settings-security.xml请参见下面的示例:
    <settingsSecurity>
        <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
    </settingsSecurity>
于 2016-03-02T22:06:55.267 回答