2016-03-02 323 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