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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

想要成为Java架构师不容放过的知识—Maven的版本发布

發(fā)布時(shí)間:2024/4/15 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 想要成为Java架构师不容放过的知识—Maven的版本发布 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天動(dòng)力節(jié)點(diǎn)Java學(xué)院給大家?guī)?lái)Java架構(gòu)師必學(xué)知識(shí)點(diǎn),Maven的版本發(fā)布。

1. RELEASE的說(shuō)明

1.1 snapshot與release的區(qū)別

大多數(shù)java開(kāi)發(fā)的小伙伴都用過(guò)maven來(lái)對(duì)包進(jìn)行管理。在自己寫項(xiàng)目的過(guò)程中,對(duì)自己的項(xiàng)目也會(huì)進(jìn)行g(shù)roupdId,artifactId,version的配置。下面我們來(lái)對(duì)著3個(gè)配置進(jìn)行簡(jiǎn)單說(shuō)明。

  • groupId:顧名思義,這個(gè)里面包含的是本項(xiàng)目屬于哪一個(gè)group(即組織或公司)。一般我們會(huì)用公司或者自己的前幾級(jí)包名來(lái)進(jìn)行定義。
  • artifactId:這個(gè)值定義的是本項(xiàng)目的名字。
  • version:這個(gè)就是我們今天講解的關(guān)鍵了。這個(gè)項(xiàng)目在maven進(jìn)行發(fā)布以后的版本號(hào)。
  • 一般,我們?cè)趧傞_(kāi)一個(gè)項(xiàng)目以后會(huì)將version定義為1.0-SNAPSHOT。snapshot單詞從字面意思來(lái)說(shuō),是快照、照相的意思。為什么我們新的項(xiàng)目要使用SNAPSHOT呢?而不是我們引入的那些公共包的.RELEASE或者只有版本號(hào)什么都不帶呢?這兩個(gè)又有什么區(qū)別呢?聽(tīng)我慢慢道來(lái): 一個(gè)項(xiàng)目在未上線發(fā)布之前會(huì)在測(cè)試環(huán)境或者開(kāi)發(fā)環(huán)境中進(jìn)行測(cè)試和調(diào)整,也有可能有需求變更和重構(gòu)。所以,snapshot說(shuō)明了,這個(gè)包還未固化其自身提供的服務(wù)。在使用帶有snapshot的包的時(shí)候要特別小心。他很可能發(fā)生變化,不知道什么時(shí)候你之前使用的功能就會(huì)被這個(gè)包的維護(hù)人員干掉或者改變了。 而大家使用的類似Spring之類的公共開(kāi)源包都是以RELEASE結(jié)尾的,這說(shuō)明了當(dāng)前這個(gè)版本號(hào)的包會(huì)穩(wěn)定的提供功能服務(wù),不會(huì)發(fā)生任何變化。如果需要變化只能通過(guò)修改版本號(hào)。

    1.2 release的必要性

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

    2. scm的配置

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

  • <project>
  • <scm>?
  • ????????<!--release包需要放入的nexus或者其他maven release包的倉(cāng)庫(kù)url地址-->
  • ????????<url>http://xxxx/nexus/content/repositories/releases/</url>
  • ????????<!--connection, developerConnection: 都是連接字符串,其中后者是具有write權(quán)限的scm連接 -->
  • ????????<!--需要打包項(xiàng)目的git地址-->
  • ????????<developerConnection>scm:git:http://xxxx/c-h5/portal-common-base.git</developerConnection>
  • ?????????<!--需要打包項(xiàng)目的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目標(biāo)指令-->
  • ????????????????????<goals>-f pom.xml deploy</goals>
  • ????????????????</configuration>
  • ????????????</plugin>
  • ????????</plugins>
  • </build>????????
  • 4.release的操作流程

    4.1 第一步release:prepare

    這條命令主要是做打包前的準(zhǔn)備。

  • 輸入對(duì)應(yīng)的release需要打包的版本等信息,如果不輸入有默認(rèn)的內(nèi)容
  • 將需要記錄和準(zhǔn)備的內(nèi)容緩存到pom.xml目錄下的release.properties文件中
  • 在本地和遠(yuǎn)程庫(kù)的GIT中打上對(duì)應(yīng)版本的tag
  • 在準(zhǔn)備過(guò)程中還會(huì)run 單元測(cè)試等phase,如果沒(méi)有異常的話可以繼續(xù)最后一步。如果git還沒(méi)有commit或單元測(cè)試失敗會(huì)導(dǎo)致prepare失敗,這時(shí)候你就需要到下面一個(gè)命令了。

    4.2 后悔藥release:rollback

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

  • 刪除線上git庫(kù)tag,但是本地庫(kù)tag沒(méi)有被刪除,需要手動(dòng)使用git tag -d XXX進(jìn)行刪除。如果不將本地庫(kù)中的tag刪除將會(huì)導(dǎo)致prepare失敗。
  • 刪除之前緩存在pom.xml統(tǒng)一目錄下的配置
  • 4.3 最后一步release:perform

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

  • 驗(yàn)證代碼合法性
  • 將你之前的1.0-SNAPSHOT改為1.1-SNAPSHOT
  • 將1.0版本deploy至scm配置的nexus release庫(kù)中
  • 將代碼source。jar版本 javacode。jar打包上傳至nexus庫(kù)
  • 恭喜,你已經(jīng)把你的1.0-SNAPSHOT成功的打包成1.0的release版本了。同時(shí)你會(huì)發(fā)現(xiàn)你的pom.xml文件會(huì)自動(dòng)的變成1.1-SNAPSHOT版本。雖然這一系列操作都可以通過(guò)手動(dòng)完成。但是有這個(gè)工具的存在,免去了很多步驟。也規(guī)范了流程,何樂(lè)而不為呢。

    ?

    動(dòng)力節(jié)點(diǎn)Java架構(gòu)師班深度剖析Java底層原理,熱門技術(shù)深入探討,前沿技術(shù)深入解讀,大項(xiàng)目實(shí)戰(zhàn)重構(gòu),從0到1做架構(gòu),從全局思維出發(fā),帶你把控大型項(xiàng)目中別人忽略的重要細(xì)節(jié)節(jié)點(diǎn),站在巨人肩膀上學(xué)習(xí)架構(gòu)師,帶你領(lǐng)會(huì)架構(gòu)師不一樣的視野

    總結(jié)

    以上是生活随笔為你收集整理的想要成为Java架构师不容放过的知识—Maven的版本发布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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