Java架構師升級必備—Maven的版本發佈

今天動力節點Java學院給你們帶來Java架構師必學知識點,Maven的版本發佈。java

  1. RELEASE的說明

1.1 snapshot與release的區別
大多數java開發的小夥伴都用過maven來對包進行管理。在本身寫項目的過程當中,對本身的項目也會進行groupdId,artifactId,version的配置。下面咱們來對着3個配置進行簡單說明。
1.groupId:顧名思義,這個裏面包含的是本項目屬於哪個group(即組織或公司)。通常咱們會用公司或者本身的前幾級包名來進行定義。
2.artifactId:這個值定義的是本項目的名字。
3.version:這個就是咱們今天講解的關鍵了。這個項目在maven進行發佈之後的版本號。
通常,咱們在剛開一個項目之後會將version定義爲1.0-SNAPSHOT。snapshot單詞從字面意思來講,是快照、照相的意思。爲何咱們新的項目要使用SNAPSHOT呢?而不是咱們引入的那些公共包的.RELEASE或者只有版本號什麼都不帶呢?這兩個又有什麼區別呢?聽我慢慢道來: 一個項目在未上線發佈以前會在測試環境或者開發環境中進行測試和調整,也有可能有需求變動和重構。因此,snapshot說明了,這個包還未固化其自身提供的服務。在使用帶有snapshot的包的時候要特別當心。他極可能發生變化,不知道何時你以前使用的功能就會被這個包的維護人員幹掉或者改變了。 而你們使用的相似Spring之類的公共開源包都是以RELEASE結尾的,這說明了當前這個版本號的包會穩定的提供功能服務,不會發生任何變化。若是須要變化只能經過修改版本號。
1.2 release的必要性
當咱們的項目達到了當前的目標,在通過檢測後不須要改變。這時咱們就須要將SNAPSHOT版本打包成RELEASE版本。只有這樣,使用這個包的用戶才能放心的將這個版本的包放入本身的項目中使用。而且,不會擔憂這個功能包提供的功能會隨時發生改變。 接下來咱們就學習如何將在git中管理的功能包從snapshot打包成爲release版本git

  1. scm的配置

scm是mvn爲咱們提供的,對版本管理軟件進行管理和操做的插件。因爲本指南只講解打包過程,不會詳細講解本工具的具體概念和使用方式。
1.<project>
2.<scm>apache

  1. <!--release包須要放入的nexus或者其餘maven release包的倉庫url地址-->
  2. <url>http://xxxx/nexus/content/rep...;/url>
  3. <!--connection, developerConnection: 都是鏈接字符串,其中後者是具備write權限的scm鏈接 -->
  4. <!--須要打包項目的git地址-->
  5. <developerConnection>scm:git:http://xxxx/c-h5/portal-commo...;/developerConnection>
  6. <!--須要打包項目的git地址-->
  7. <connection>scm:git:http://xxx/c-h5/portal-common...;/connection>
  8. <!---->
  9. <tag>HEAD</tag>
  10. </scm>

13.</project>
3.maven-release-plugin的配置
1.<build>緩存

  1. <plugins>
  2. <!-- 發佈插件 -->
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-release-plugin</artifactId>
  6. <version>2.5.3</version>
  7. <configuration>
  8. <!--git用戶名-->
  9. <username>xxxxx@shishike.com</username>
  10. <!--git密碼-->
  11. <password>xxxx</password>
  12. <!--mvn目標指令-->
  13. <goals>-f pom.xml deploy</goals>
  14. </configuration>
  15. </plugin>
  16. </plugins>

18.</build>
4.release的操做流程
4.1 第一步release:prepare
這條命令主要是作打包前的準備。
1.輸入對應的release須要打包的版本等信息,若是不輸入有默認的內容
2.將須要記錄和準備的內容緩存到pom.xml目錄下的release.properties文件中
3.在本地和遠程庫的GIT中打上對應版本的tag
在準備過程當中還會run 單元測試等phase,若是沒有異常的話能夠繼續最後一步。若是git尚未commit或單元測試失敗會致使prepare失敗,這時候你就須要到下面一個命令了。
4.2 後悔藥release:rollback
若是在準備階段發生錯誤,或者須要修改某些地方的話。就須要到這個命令了,這個命令執行之後會作如下這些事
1.刪除線上git庫tag,可是本地庫tag沒有被刪除,須要手動使用git tag -d XXX進行刪除。若是不將本地庫中的tag刪除將會致使prepare失敗。
2.刪除以前緩存在pom.xml統一目錄下的配置
4.3 最後一步release:perform
若是確認無誤了之後,就能夠執行perform命令了。這個命令幹了如下這些事:
1.驗證代碼合法性
2.將你以前的1.0-SNAPSHOT改成1.1-SNAPSHOT
3.將1.0版本deploy至scm配置的nexus release庫中
4.將代碼source。jar版本 javacode。jar打包上傳至nexus庫
恭喜,你已經把你的1.0-SNAPSHOT成功的打包成1.0的release版本了。同時你會發現你的pom.xml文件會自動的變成1.1-SNAPSHOT版本。雖然這一系列操做均可以經過手動完成。可是有這個工具的存在,免去了不少步驟。也規範了流程,何樂而不爲呢。架構

動力節點Java架構師班深度剖析Java底層原理,熱門技術深刻探討,前沿技術深刻解讀,大項目實戰重構,從0到1作架構,從全局思惟出發,帶你把控大型項目中別人忽略的重要細節節點,站在巨人肩膀上學習架構師,帶你領會架構師不同的視野maven

相關文章
相關標籤/搜索