`
ln_ydc
  • 浏览: 270731 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Maven入门实战笔记11-版本管理

 
阅读更多

 

目录一览
---------------------------------------
  1. 何为版本管理
  2. Maven的版本号定义约定
  3. 主干、标签与分支
  4. 自动化版本发布
  5. 自动化创建分支
  6. GPC签名
 
  1. 何为版本管理
    区分:版本管理(Version Management)、版本控制(Version Control)
    前者,指项目整体版本的演变过程管理,如从1.0-SNAPSHOT到1.0再到
    1.1-SNAPSHOT;后者,是指借助版本控制工具追踪代码的每一个变更

    快照版和发布版之间的转换是版本管理关心的问题之一
    发布版本满足的条件:
    1. 所有自动化测试应当全部通过
    2. 项目没胡配置任何快照版本的依赖
    3. 项目没胡配置任何快照版本的插件
    4. 项目所包含的代码已经全部提交到版本控制系统中

    项目发布与标签(Tag)的关系:
    版本控制系统记录代码 的每一个变化 ,通常这些变化都被维护在主干(Trunk)中,但是当项目发布的时候 ,开发人员就应该使用标签记录这一特殊的状态。
    将项目的快照版本更新至发布版本之后,应当再执行一次Maven构建,以确保项目状态是健康的。然后将这一变更提交到版本控制系统的主干中,接着再为当前主干的状态打上标签。
    mvn clean install
    svn commit pom.xml -m "prepare to release 1.0"
    svn copy -m "tag release 1.0" \
    https://localhost/account/trunk \ 
    https://localhost/account/tags/1.0
    至此,一个版本发布的过程完成了,接下来就是更新发布版本至最新的快照版本。
     
  2. Maven的版本号定义约定
    例子:1.3.4-beta-2
    表示该项目或产品的第一个重大版本第三个次要版本第四次增量版本beta-2的里程碑。

    Maven的版本号定义约定:
    <主版本>.<次版本>.<增量版本>-<里程碑版本>
    主版本:表示项目的重大架构变更
    次版本:表示较大范围的功能增加和变化,及Bug修复
    增量版本:表示重大Bug的修复
    里程碑版本:一个版本的里程碑,与正式版本相比,表示不是非常稳定

    不是每个版本号都必须拥有这四个部分,前两个一般声明,后两个不一定
    注:Maven对于版本号的排序,对于前3个版本是基于数字排序,对于里程碑版本是基于字符串比较排序的

  3. 主干、标签与分支
    主干(trunk):项目开发代码的主体,是从开始直到当前都处于活动的状态
    分支(branch):从主干的某个点分离出来的代码拷贝,通常可以在不影响主干的前提下在这里进行重大Bug修复,或者做一些实验性质的开发。如果分支达到了预期的 目的,通常性在这里的变更会被合并(merge)到主干中。
    标签(tag):用来标识主干或者分支的某个点的状态,以代表项目的某个稳定状态,这通常就是版本发布时的状态
    参考《Subversion与版本控制》

  4. 自动化版本发布
    使用工具Maven RElease Plugin发布项目版本
    三个目标:
    release:prepare    执行下列操作
        检查项目是否有未提交的代码
        检查项目是否有快照版本依赖
        根据用户的输入将快照版本升级为发布版
        将POM中的SCM信息更新为标签地址
        基于修改后的POM执行Maven构建
        提交POM更新
        基于用户输入为代码打标签
        将代码从发布版升级为新的快照版
        提交POM变更
    release:rollback    回退release:prepare所执行的操作,注:该步不会删除release:prepare生成的标签,需手动删除
    release:perform    执行版本发布。签出release:prepare生成的标签中的源代码,并在此基础上执行mvn deploy命令打包并部署构件至仓库。
         <!-- 为版本发布配置SCM信息 -->
         <scm >
               <connection> scm:svn:http://localhost /account/trunk</ connection>
               <developerConnection> scm:svn:https://localhost /account/trunk</ developerConnection>
                <url> http://localhost/account/trunk</url >
         </scm >
     
    connection:表示一个只读的scm地址
    develperConnection:表示可写的scm地址
    url:表示可以在浏览器中访问的scm地址
    为了让Maven识别,connection和developerConnection必须以scm开头,冒号之后的部分表示版本控制工具类型
    该配置只告诉Maven当前版本的位置(主干),而版本发布还要涉及标签操作,因此还需配置Maven Plugin Release Plugin告诉其标签的基础目录
    <!-- 配置maven-release-plugin提供标签基础目录 -->
                     <plugin>
                          <groupId> org.apache.maven.plugins</groupId >
                          <artifactId> maven-release-plugin</artifactId>
                          <version> 2.0</version >
                          <configuration>
                               <tagBase> https://localhost/account/tags</tagBase >
                          </configuration>
                     </plugin>
     


  5. 自动化创建分支
    a
  6. GPC签名
    a

 

分享到:
评论

相关推荐

    Maven入门实战笔记02-基础(2)

    【标题】"Maven入门实战笔记02-基础(2)" 涉及的主要知识点是Maven的基础使用,包括项目的创建、配置文件的理解以及依赖管理等。Maven是一款强大的Java项目管理和集成工具,它帮助开发者统一构建过程,管理项目的依赖...

    读书笔记:Maven入门与实战.zip

    读书笔记:Maven入门与实战

    maven从入门到实战

    本文首先针对maven3.3.3 的版本构建普通Java 应用和Java Web 应用进行讲解。然后针对公司私有maven 库的情况下,如何安装自有资源及在maven 应用中使用私有maven 库中的资源进行说明。接下来针对maven 与配置管理...

    maven_实战_学习笔记

    maven_实战_学习笔记 Maven安装 Maven 使用入门 主代码 位置:src/main/java 命令:mvn clean compile 解释:clean告诉maven清理target目录 compile告诉maven 编译项目主代码 测试代码 位置:src/test/java 命令...

    SpringBoot与Shiro整合-权限管理实战-课堂笔记.docx

    【SpringBoot与Shiro整合-权限管理实战】的课程主要关注如何将Spring Boot与Apache Shiro框架结合起来,实现高效的安全管理。Spring Boot是Spring框架的一个简化版本,旨在提高开发效率,减少配置工作,同时提供了很...

    读书笔记:Lucene全文检索入门项目 Java实现Maven项目 Elasticsearch 基础实战.zip

    读书笔记:Lucene全文检索入门项目 Java实现Maven项目 Elasticsearch 基础实战

    2.2 SpringBoot与Shiro整合-权限管理实战-课堂笔记.docx

    【SpringBoot与Shiro整合-权限管理实战】 在本文中,我们将探讨如何将Spring Boot与Apache Shiro框架整合,以实现高效且灵活的权限管理系统。首先,我们需要了解这两个框架的基本概念。 **Spring Boot框架简介** ...

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip 章节笔记 第1章-课程介绍及项目框架搭建 知识点 使用spring boot 搭建项目基础框架 使用Thymeleaf做页面展示,封装Result统一结果 集成 mybatis + ...

    JUnit入门笔记~

    这篇入门笔记将带你深入了解JUnit的基本概念、使用方法以及其在实际开发中的应用。 **一、JUnit简介** JUnit是一个开源的、基于Java的测试框架,它简化了对代码进行单元测试的过程。通过JUnit,开发者可以快速地...

    springboot学习笔记(史上最全)

    1. **添加SpringBoot的父POM**:SpringBoot项目通常继承自`spring-boot-starter-parent`,这样可以自动引入版本管理和依赖管理。 2. **添加起步依赖**:在`&lt;dependencies&gt;`标签下,引入所需的SpringBoot起步依赖。 ...

    java-concurrent-programming:《实战Java高并发程序设计》笔记和二进制整理

    《实战Java高并发程序设计》笔记和源码笔记《实战Java高并发程序设计》中有很多代码范例,适合初学者通过实践入门并发编程,这本书有个问题就是前面的代码都用JDK7,第六章开始又用JDK8了笔者精心制作相关笔记并整理...

    笔记CoderEsky

    - Maven或Gradle:项目构建工具,管理依赖关系,自动化构建过程。 5. **Java学习路径** - 入门:理解基本语法,编写简单的控制台程序。 - 面向对象编程:深入学习类、对象、继承、多态等概念。 - 数据结构与...

    Eclipse开发学习笔记

    《Eclipse开发学习笔记》这本书涵盖了Eclipse的基础知识、高级特性以及实战技巧,是初学者入门和进阶的良好资源。通过学习,读者不仅可以掌握Eclipse的基本操作,还能了解到如何利用Eclipse进行高效开发,以及如何...

    Java Web框架技术笔记

    1. **Spring开发环境准备**:首先,学习者需要安装和配置JDK 1.8,使用IntelliJ IDEA作为集成开发环境,并熟悉Maven进行项目管理和jar包管理。对于数据库管理,MySQL和Navicat是常用的工具。前端部分,Node.js和Vue....

    SSM笔记和代码.rar

    2. **实战代码**:这部分可能包含了一个或多个实际的SSM项目案例,涵盖了从环境搭建、配置文件编写、Maven依赖管理、DAO层、Service层、Controller层的实现,一直到项目的部署和运行。这些代码示例可以帮助开发者...

    ibatis学习笔记(一)

    在工具的使用上,Ibatis的安装通常是通过Maven或Gradle依赖管理工具进行的。在项目中引入对应的依赖后,需要配置SqlSessionFactoryBean,指定数据源、配置文件路径等信息。此外,Ibatis还支持动态SQL,这使得在SQL...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ │ JVM调优实战.doc │ │ Tomcat7优化.docx │ │ 深入理解Java内存模型.pdf │ │ │ └─课后资料 │ ├─笔记 │ │ 淘淘商城_day20_课堂笔记.docx │ │ │ └─视频 │ 07-使用Jedis连接集群操作.avi │ ...

    flink(java)笔记

    **Flink(Java)笔记** 在大数据处理领域,Apache Flink是一个开源的流处理和批处理框架,以其高效、实时和容错性而备受推崇。本笔记将专注于使用Java API来操作Flink,以帮助开发者深入理解其核心概念和功能。 ### ...

Global site tag (gtag.js) - Google Analytics