我有一個使用Spring框架和Git的Java項目,我想顯示一個內部版本號。我找到了Build Number Maven plugin。使用Git的內部版本號是Git哈希。我不喜歡那個,我認爲約會更具表現力。Maven內部版本號插件,如何在文件中保存內部版本號?
我發現這個excellent blog article解釋瞭如何使用SVN和Git的不同配置文件的內部編號插件。由於我只是使用Git,而不是創建一個新的配置文件,所以我只是將插件部分複製到我的構建標籤中。
當我運行「MVN套裝」它告訴我:
[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd ---
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631
這看起來不錯,但我不知道,是它存儲在何處? 「git status」沒有檢測到任何新文件,它似乎也不在target/target中(target /在我的.gitignore中)。
也許我必須更改配置以將內部版本號存儲在文件中?我如何使用內部版本號值?
感謝Michael-O的提示,我閱讀了關於how to filter resource files in Maven Getting Started Guide的章節。我在SRC創建的文件application.properties /主/資源/屬性/用以下內容application.properties:
# application properties
application.name=${pom.name}
application.version=${pom.version}
application.build=${buildNumber}
我已經添加了我的構建部分中的以下XML片段:
<resources>
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
</resource>
</resources>
現在,當我從命令行調用「MVN套裝」,這個屬性的文件就會保存在目標/班/屬性/ application.properties,例如包含以下內容:
# application properties
application.name=Sherd Control Panel
application.version=1.0.1-SNAPSHOT
application.build=2011-08-05_05-55_stivlo
一切工作的命令行罰款,但是,嘆了口氣,m2eclipse的給出了構建錯誤:
05/08/11 6.05.03 CEST: Build errors for obliquid-cp;
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project
sherd: Cannot get the branch information from the scm repository :
Exception while executing SCM command.
出於某種原因,m2eclipse的嘗試連接到我的倉庫,但不能因爲它是一個Git倉庫用SSH訪問和一個私鑰。我想知道是否可以告訴m2eclipse不連接到Git。
經過更多的挖掘,我發現有關revisionOnScmFailure選項,將其設置爲true,現在m2eclipse也可以工作。作爲參考,這裏是我使用的buildnumber maven插件的完整配置(它在build/plugins部分中的pom.xml中)。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<revisionOnScmFailure>true</revisionOnScmFailure>
<format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
<items>
<item>timestamp</item>
<item>${user.name}</item>
</items>
</configuration>
</plugin>
但是它不創建該文件,至少與我的配置。我通過過濾屬性文件取得了部分成功,但我遇到了另一個問題,就像我更新後的問題。 – stivlo
您是否嘗試過手動創建文件,並首先在其中添加一個起始buildNumber? 這樣做,做你的事情,然後檢查數字是否增加。確保你達到了要求的要求。 –
感謝您的建議。我嘗試創建一個空的buildNumber.properties文件,並執行buildnumber:create並且什麼也沒有發生,然後我試圖放進一個1中,執行一個buildnumber:create並且什麼都沒發生。與此同時,我剛剛發現了使用過濾屬性的最後一個問題的解決方案。我將用完整的解決方案更新我的問題。 – stivlo