2016-03-02 319 views
2

我想在我的settings.xml中使用加密的密碼。我在我的pom.xml連接到數據庫插件,全光照SQL-Maven的插件:Maven:從pom.xml中的settings.xml中讀取加密的密碼

<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',我怎麼能a請點這個?或者如果你有一個替代版本來實現這一點。

回答

4

爲此,您需要encrypt a password using Maven tools,然後configure the sql-maven-plugin to use it。這在插件的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-pluginsettingsKey屬性到您的服務器的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> 
    

如果任何加密的密碼的含有大括號,you'll need to escape them由具有\{\}

0
  1. 的pom.xml,刪除用戶/密碼,而是指定一個settingsKey如MOJO documentation說明。
  2. 的settings.xml,創建一個新的server條目以id等於以前settingsKey值,如解釋here
  3. 創建一個settings-security.xml並將服務器密碼標記爲standard way