Mavne插件--關(guān)于版本控制
一個(gè)項(xiàng)目到一個(gè)階段后,就需要發(fā)布一個(gè)正式的版本(release版本)。一次正式的發(fā)布需要這樣一些工作:
你可以手工一步步的做這些事情,無(wú)非就是一些svn操作,一些pom編輯,還有一些mvn操作。但是你應(yīng)該明白,手工做這些事情,一來(lái)繁瑣,而來(lái)容易出錯(cuò)。因此這里我介紹使用maven插件來(lái)自動(dòng)化這一系列動(dòng)作。
在POM中加入scm信息,這樣Maven才能夠替你完成svn操作,配置如下:
<scm>
<connection>scm:svn:http://svnIP/svn/myapp/trunk/</connection><developerConnection>scm:svn:https://svnIP/svn/myapp/trunk/</developerConnection>
</scm>
maven-release-plugin
我們需要配置maven-release-plugin,這個(gè)插件會(huì)幫助我們升級(jí)pom版本,提交,打tag,然后再升級(jí)版本,再提交,等等。基本配置如下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-7</version>
<configuration>
<tagBase>https://svnIP/svn/myapp/tags/</tagBase>
</configuration>
</plugin>
tagBase需要填寫svn中發(fā)布項(xiàng)目的目錄
確保你的所有代碼都提交了,如果你有未提交代碼,release插件會(huì)報(bào)錯(cuò),既然你要發(fā)布版本了,就表示代碼是穩(wěn)定的
執(zhí)行mvn release:prepare
執(zhí)行過(guò)程中,你會(huì)遇到這樣的提示:
What is the release version for "Unnamed - org.myorg:myapp:jar:1.0-SNAPSHOT"? (org.myorg:myapp) 1.0: :
——“你想將1.0-SNAPSHOT發(fā)布為什么版本?默認(rèn)是1.0?!蔽乙木褪?.0,直接回車。
What is SCM release tag or label for "Unnamed - org.myorg:myapp:jar:1.0-SNAPSHOT"? (org.myorg:myapp) myapp-1.0: :
——“發(fā)布的tag標(biāo)簽名稱是什么?默認(rèn)為myapp-1.0。”我還是要默認(rèn)值,直接回車。
What is the new development version for "Unnamed - org.myorg:myapp:jar:1.0-SNAPSHOT"? (org.myorg:myapp) 1.1-SNAPSHOT: :
——“主干上新的版本是什么?默認(rèn)為1.1-SNAPSHOT?!惫瑀elease插件會(huì)自動(dòng)幫我更新版本到1.1-SNAPSHOT,很好,直接回車。
結(jié)果:
接著將其發(fā)布至到倉(cāng)庫(kù)中
執(zhí)行mvn release:perform
maven-release-plugin會(huì)自動(dòng)幫我們簽出剛才打的tag,然后打包,分發(fā)到遠(yuǎn)程Maven倉(cāng)庫(kù)中,至此,整個(gè)版本的升級(jí),打標(biāo)簽,發(fā)布等工作全部完成。我們可以在遠(yuǎn)程Maven倉(cāng)庫(kù)中看到正式發(fā)布的1.0版本。
這可是自動(dòng)化的 ,正式的 版本發(fā)布!
http://maven.apache.org/plugins/index.html
http://juvenshun.iteye.com/
Nexus搭建Maven私服(二) 分發(fā)構(gòu)件至遠(yuǎn)程倉(cāng)庫(kù)
聯(lián)系客服