1

Im面臨以下問題:我想將mercurial hash集成到我的java項目中。我想將它集成到生成文件(一個debian包)的名稱中,我也希望有一個像version.properties這樣的文件,可以訪問mercurial hash。Java:Maven:獲取屬性文件中的pom.xml信息(mercurial hash作爲版本)

我知道有很多類似的問題,但我讀了他們,不知何故我無法解決我的問題。

我使用buildnumber-maven-plugin來檢索mercurial hash。然後我將它整合到版本中。然後,當我運行mvn clean install這個工作到目前爲止,debian軟件包是用這個散列生成的。

<version>project-${buildNumber}</version> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>buildnumber-maven-plugin</artifactId> 
      <version>1.0</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>create</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

我缺少的是什麼buildNumber.properties文件,它會自動由插件生成。我無法在任何地方找到它。所以我決定寫我自己的屬性文件。我在src/main/resources中創建了一個,並將一個屬性添加到我的pom.xml中。下面是摘錄:

的pom.xml

<properties> 
    <merc.version>${buildNumber}</merc.version> 
</properties> 

version.properties

version=${buildNumber} 
version2=${merc.version} 

然後我mvn clean install從CMDL運行。但是當我從命令行打開我的version.properties文件並使用less時,我發現內容像上面寫的那樣是明文。這些屬性不會被真實內容所取代。我只看到version=${buildNumber},依此類推。

此外,應該由maven生成的文件「pom.properties」包含一個月前的一個非常舊的版本。我不明白該怎麼做來更新它。

請,如果有人能幫助我,那將是偉大的:-)謝謝!

回答

2

你必須激活filtering for the resources你wan't要進行濾波在這種情況下,這意味着:

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

如果您version.properties文件爲src /主/資源/版本下正確定位/這將是在構建過程中被過濾,並被複制到目標/類/ ...應該被替換的佔位符。

+0

太棒了!謝謝!我已經添加了filtering = true,但我總是看着錯誤的文件,而不是目標/類中的文件。愚蠢的我!謝謝!! :-) – nano7 2012-03-15 09:28:07

相關問題