Maven: прочитать зашифрованный пароль из settings.xml в 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>
...

Я хочу каким-то образом «прочитать» декодировать «пароль» из «rms13-db-dev», как мне этого добиться? или если у вас есть альтернативная версия для достижения этой цели.


person Daniel Hernández    schedule 02.03.2016    source источник


Ответы (2)


Чтобы это работало, вам нужно зашифровать пароль с помощью инструментов Maven и затем настройте sql-maven-plugin для его использования. Это не поддерживается в версии плагина 1.4, но возможно в версии 1.5.

  1. Создайте мастер-пароль с помощью команды

    mvn --encrypt-master-password
    

    Maven предложит вам ввести пароль с версии 3.2.1. Как только вы это сделаете, создайте файл с именем ~/.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 на идентификатор вашего сервера. , что в данном случае будет 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>
    

Если какой-либо из зашифрованных паролей содержит фигурные скобки, необходимо их экранировать. имея \{ и \}.

person Tunaki    schedule 02.03.2016

  1. В pom.xml удалите пользователя/пароль и вместо этого укажите settingsKey, как описано в MOJO документация.
  2. В settings.xml создайте новую запись server, где id равно предыдущему значению settingsKey, как описано здесь.
  3. Создайте settings-security.xml и зашифруйте пароль сервера стандартный способ. Файл должен быть создан по следующему пути: ${user.home}/.m2/settings-security.xml См. пример ниже:
    <settingsSecurity>
        <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
    </settingsSecurity>
person idelvall    schedule 02.03.2016