Maven Release发布指南---Git版

MavenRelease发布指南---Git版

1.RELEASE的说明

1.1snapshot与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.2release的必要性

当我们的项目达到了当前的目标,在经过检测后不需要改变。这时我们就需要将SNAPSHOT版本打包成RELEASE版本。只有这样,使用这个包的用户才能放心的将这个版本的包放入自己的项目中使用。并且,不会担心这个功能包提供的功能会随时发生改变。
接下来我们就学习如何将在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权限的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>
            <!-- 发布插件 -->
            <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

这条命令主要是做打包前的准备。

  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版本。虽然这一系列操作都可以通过手动完成。但是有这个工具的存在,免去了很多步骤。也规范了流程,何乐而不为呢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容