2016-09-16 73 views
1

行家性能我有wildfly與此屬性pluging在外部配置的主機名,用戶等獲得從外部配置文件

<plugin> 
    <groupId>org.wildfly.plugins</groupId> 
    <artifactId>wildfly-maven-plugin</artifactId> 
    <version>1.0.0.Final</version> 
    <configuration> 
     <hostname>${wildfly.hostname}</hostname> 
     <port>${wildfly.port}</port> 
     <username>${wildfly.username}</username> 
     <password>${wildfly.password}</password> 
    </configuration> 
    <executions> 
     <execution> 
      <!-- <phase>package</phase> --> 
      <!-- <goals> --> 
      <!-- <goal>deploy</goal> --> 
      <!-- </goals> --> 
     </execution> 
    </executions> 
</plugin> 

然後我已經創建與特性(file.properties)的文件

wildfly.hostname=127.0.0.1 
wildfly.port=19990 
wildfly.username=user 
wildfly.password=pass 

而且我想,調用mvn wildfly:deploy當變量從文件中獲取。我曾嘗試幾種方法:

  1. 使用<properties>和它的作品,但它是pom.xml的
  2. 使用properties-maven-plugin加載使用<phase>pre-clean</phase>外部文件中,但它不工作。

這裏的問題是,在最後,我想創建不同的配置文件的配置文件夾,也就是不同的用戶,通過等

如何做到這一點任何想法?

+0

你爲什麼用'預清洗'?使用'初始化' – Tunaki

+0

我也用過它,它不起作用 – jlanza

+0

是的,你需要調用'mvn initialize wildfly:deploy',否則,階段將不會運行。只有執行'wildfly:deploy'纔會被調用。 – Tunaki

回答

3

不要將properties-maven-plugin綁定到pre-clean階段。將它綁定到initialize階段會更合適。從lifecycle reference

initialize:初始化構建狀態,例如設置屬性或創建目錄。

的問題,然而,就是當你直接調用mvn wildfly:deploy這一階段將不會運行。通過這樣做,你告訴Maven只執行wildfly-maven-plugin的執行。因此,它不會執行默認或清潔生命週期的任何內置階段。

就你而言,你實際上需要設置這些屬性,所以你需要運行initialize階段。爲此,您可以使用mvn initialize wildfly:deploy。這裏使用initialize的優點是默認生命週期的其餘階段不會運行,所以它會像以前一樣快。

在Maven中,<filters>有不同的用途:它們用於通過用特定值替換佔位符中的佔位符來修改資源內容,這些值可以來自屬性文件。因此<filters>不適用於此用例,並且properties-maven-plugin非常適合它。

+0

Coudl你請提供一個例子,說明如何配置在persistence.xml中使用屬性的東西?我應該包括過濾嗎?並運行mvn有什麼選擇? – jlanza

+0

@jlanza'persistence.xml'是一個項目資源,所以你需要過濾是的。您可以查看https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html查看過濾示例。 – Tunaki