2012-08-22 19 views
9

我在提到「Maven的:完全參考」,特別是關於型材的截面哪個文件<profile...標籤這裏內使用<properties...標籤:see here使用Maven中的屬性標籤型材

<profile> 
      <id>development</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
       <property> 
        <name>environment.type</name> 
        <value>dev</value> 
       </property> 
      </activation> 
      <properties> 
       <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName> 
       <database.url> 
        jdbc:mysql://localhost:3306/app_dev 
       </database.url> 
       <database.user>development_user</database.user> 
       <database.password>development_password</database.password> 
      </properties> 
     </profile> 

什麼我不知道的是,當mvn install -Denvironment.type=dev命令運行會發生什麼:

  • 這是否會創建一個.properties文件?
  • 如果在應用程序在dev中進行測試時,tomcat(例如)如何讀取各個屬性?
+0

一直試圖通過maven和spring來跟蹤鏈,這正是我需要的問題和答案!好一個! –

回答

17

這會創建一個.properties文件嗎?

不,它不會。這將設置maven使用的屬性。這是,與mvn install -Denvironment.type=development maven會使用變量'database.user'的值'development_user'(你可以在$ poms中使用$ {database.user}並過濾資源)。

如果tomcat(例如)在dev中測試應用程序時讀取各個屬性的方式不會如何以及在哪裏讀取?

事情是告訴maven根據配置文件(properties.files)過濾(和修改)要自定義的資源。

所以,首先你得說Maven來過濾資源:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
</build> 

然後修改您的屬性文件使用Maven變量。例如,你的db屬性文件看起來像這樣:

database.driverClassName=${database.driverClassName} 
database.url=${database.url} 
#... 
+0

我發現[文檔](http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html)在閱讀這個答案後很有幫助 - 看起來「過濾」基本上意味着maven通過並且在任何文件**中將$ {somename}替換爲build **上的值。你可以在構建輸出中看到它。很好的答案 - 真的填補了我的空白。 –