日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一文学会 Maven 的版本发布

發(fā)布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文学会 Maven 的版本发布 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. RELEASE的說明

1.1 snapshot與release的區(qū)別

大多數(shù)java開發(fā)的小伙伴都用過maven來對包進行管理。在自己寫項目的過程中,對自己的項目也會進行g(shù)roupdId,artifactId,version的配置。下面我們來對著3個配置進行簡單說明。

  • groupId:顧名思義,這個里面包含的是本項目屬于哪一個group(即組織或公司)。一般我們會用公司或者自己的前幾級包名來進行定義。

  • artifactId:這個值定義的是本項目的名字。

  • version:這個就是我們今天講解的關(guān)鍵了。這個項目在maven進行發(fā)布以后的版本號。

  • 一般,我們在剛開一個項目以后會將version定義為1.0-SNAPSHOT。snapshot單詞從字面意思來說,是快照、照相的意思。為什么我們新的項目要使用SNAPSHOT呢?而不是我們引入的那些公共包的.RELEASE或者只有版本號什么都不帶呢?這兩個又有什么區(qū)別呢?聽我慢慢道來: 一個項目在未上線發(fā)布之前會在測試環(huán)境或者開發(fā)環(huán)境中進行測試和調(diào)整,也有可能有需求變更和重構(gòu)。所以,snapshot說明了,這個包還未固化其自身提供的服務(wù)。在使用帶有snapshot的包的時候要特別小心。他很可能發(fā)生變化,不知道什么時候你之前使用的功能就會被這個包的維護人員干掉或者改變了。 而大家使用的類似Spring之類的公共開源包都是以RELEASE結(jié)尾的,這說明了當前這個版本號的包會穩(wěn)定的提供功能服務(wù),不會發(fā)生任何變化。如果需要變化只能通過修改版本號。

    1.2 release的必要性

    當我們的項目達到了當前的目標,在經(jīng)過檢測后不需要改變。這時我們就需要將SNAPSHOT版本打包成RELEASE版本。只有這樣,使用這個包的用戶才能放心的將這個版本的包放入自己的項目中使用。并且,不會擔(dān)心這個功能包提供的功能會隨時發(fā)生改變。 接下來我們就學(xué)習(xí)如何將在git中管理的功能包從snapshot打包成為release版本

    2. scm的配置

    scm是mvn為我們提供的,對版本管理軟件進行管理和操作的插件。由于本指南只講解打包過程,不會詳細講解本工具的具體概念和使用方式。

    <project> <scm><!--release包需要放入的nexus或者其他maven?release包的倉庫url地址--><url>http://xxxx/nexus/content/repositories/releases/</url><!--connection,?developerConnection:?都是連接字符串,其中后者是具有write權(quán)限的scm連接?--><!--需要打包項目的git地址--><developerConnection>scm:git:http://xxxx/c-h5/portal-common-base.git</developerConnection><!--需要打包項目的git地址--><connection>scm:git:http://xxx/c-h5/portal-common-base.git</connection><!----><tag>HEAD</tag></scm> </project>

    3.maven-release-plugin的配置

    <build><plugins><!--?發(fā)布插件?--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>2.5.3</version><configuration><!--git用戶名--><username>xxxxx@shishike.com</username><!--git密碼--><password>xxxx</password><!--mvn目標指令--><goals>-f?pom.xml?deploy</goals></configuration></plugin></plugins> </build>

    4.release的操作流程

    4.1 第一步release:prepare

    這條命令主要是做打包前的準備。

  • 輸入對應(yīng)的release需要打包的版本等信息,如果不輸入有默認的內(nèi)容

  • 將需要記錄和準備的內(nèi)容緩存到pom.xml目錄下的release.properties文件中

  • 在本地和遠程庫的GIT中打上對應(yīng)版本的tag

  • 在準備過程中還會run 單元測試等phase,如果沒有異常的話可以繼續(xù)最后一步。如果git還沒有commit或單元測試失敗會導(dǎo)致prepare失敗,這時候你就需要到下面一個命令了。

    4.2 后悔藥release:rollback

    如果在準備階段發(fā)生錯誤,或者需要修改某些地方的話。就需要到這個命令了,這個命令執(zhí)行以后會做以下這些事

  • 刪除線上git庫tag,但是本地庫tag沒有被刪除,需要手動使用git tag -d XXX進行刪除。如果不將本地庫中的tag刪除將會導(dǎo)致prepare失敗。

  • 刪除之前緩存在pom.xml統(tǒng)一目錄下的配置

  • 4.3 最后一步release:perform

    如果確認無誤了以后,就可以執(zhí)行perform命令了。這個命令干了以下這些事:

  • 驗證代碼合法性

  • 將你之前的1.0-SNAPSHOT改為1.1-SNAPSHOT

  • 將1.0版本deploy至scm配置的nexus release庫中

  • 將代碼source。jar版本 javacode。jar打包上傳至nexus庫

  • 恭喜,你已經(jīng)把你的1.0-SNAPSHOT成功的打包成1.0的release版本了。同時你會發(fā)現(xiàn)你的pom.xml文件會自動的變成1.1-SNAPSHOT版本。雖然這一系列操作都可以通過手動完成。但是有這個工具的存在,免去了很多步驟。也規(guī)范了流程,何樂而不為呢。

    總結(jié)

    以上是生活随笔為你收集整理的一文学会 Maven 的版本发布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。