2014-11-06 120 views
2

我正在主動在構建過程中自動增加X.Y.Z版本。在這種情況下,我們不刪除SNAPSHOT後綴(使它成爲一個發佈版本),而增加的版本,小的那部分:Maven自動增量發佈版本

  • ​​=>X.Y.Z+1-SNAPSHOT
  • NOT​​=>X.Y.Z

我不能使用Maven發佈插件,因爲它只能切斷SNAPSHOT後綴以使其發佈版本。所以,我最終創建了一個自定義腳本,它具有增加版本的邏輯。

我在這裏的問題是,我如何能夠最好地實現以下步驟:

  1. 退房是Perforce的pom.xml
  2. 運行自定義腳本以增加版本。
  3. 如果部署成功,則提交pom.xml更改。

我創建了一個maven配置文件autoversion,它部分滿足了上述需求。作爲生成資源階段的一部分,Maven首先增加版本。但是,它最終會部署項目的舊版本。

mvn -Pautoversion clean deploy 

     <profile> 
     <id>autoversion</id> 
     <build> 
      <plugins> 
            <plugin> 
             <artifactId>exec-maven-plugin</artifactId> 
             <groupId>org.codehaus.mojo</groupId> 
             <executions> 
              <execution> 
               <id>Calculate version</id> 
               <phase>generate-resources</phase> 
               <goals> 
                <goal>exec</goal> 
               </goals> 
               <configuration> 
                <executable>${basedir}/autoincrementversion.sh</executable> 
                <arguments> 
                  <argument>-bdj</argument> 
                </arguments> 
               </configuration> 
              </execution> 
             </executions> 
            </plugin> 
            <plugin> 
              <groupId>org.apache.maven.plugins</groupId> 
              <artifactId>maven-scm-plugin</artifactId> 
              <version>1.9</version> 
              <executions> 
                <execution> 
                  <phase>generate-resources</phase> 
                  <goals> 
                    <goal>edit</goal> 
                    <goal>checkin</goal> 
                  </goals> 
                  <configuration> 
                    <username>jenkins</username> 
                    <basedir>./</basedir> 
                    <includes>pom.xml</includes> 
                    <message>Auto increment pom version</message> 
                  </configuration> 
                </execution> 
              </executions> 
            </plugin> 
      </plugins> 
     </build> 
    </profile> 


[INFO] ------------------------------------------------------------------------ 
[INFO] Building project 99.22.8 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- versions-maven-plugin:1.3.1:set (default-cli) @ project --- 
[INFO] Searching for local aggregator root... 
[INFO] Local aggregation root: /opt/project/auto-increment-release 
[INFO] Processing com.project 
[INFO]  Updating project com.project 
[INFO]   from version 99.22.8 to 99.22.9 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.135s 
[INFO] Finished at: Wed Nov 05 23:15:13 PST 2014 
[INFO] Final Memory: 11M/152M 
[INFO] ------------------------------------------------------------------------ 

任何指針來實現的要求是高度讚賞。

+0

我會說你應該深入研究[Maven 3.2.1](http://maven.apache.org/docs/3.2.1/release-notes.html),直接從外部支持屬性。請參閱發行說明「持續交付友好版本」。 – khmarbaise 2014-11-06 20:41:44

+0

感謝您的指點,很高興知道,但現在升級並不是立竿見影的選擇,因爲我們必須測試各種其他因素。 – user6930 2014-11-06 23:18:44

+0

@ user6930,我不確定你在這個部分中是否正確,Maven Release Plugin是_「只能切斷SNAPSHOT後綴以使其發佈版本」_。它實際上建議自動遞增該版本的最小有效數字。這不是你想要的嗎? – uvsmtid 2015-07-22 17:00:32

回答

1

我們正在考慮實際使用Maven版本插件(MRP)在類似的情況下改變這一切的版本號爲類似X.Y.Z.N

  • X.Y.Z語義部分適當的人力,引導釋放,在此期間很少改變
  • N遞增 MRP能夠自動遞增的部分(無意義的順序排序除外)

是的,MRP會創建兩個額外的提交(發佈版本和下一個SNAPSHOT版本),但是......如果您的開發人員進行快照構建,他們需要X.Y.Z.N-SNAPSHOT版本。如果你想增量發佈,你也需要X.Y.Z.N。因此,相同的兩個提交。

全部你可能avoid optionally is X.Y.Z.N tagging只等待X.Y.Z