如果项目中依赖通过Maven 来管理, 就涉及到如果项目发布。 项目发布的时机通常是每个迭代,或者一个阶段结束我们需要release 一个新的版本。 在Maven中, release 一个项目的前提条件是:
1, mvn, svn 命令行工具可用。 mvn release 会间接的调用svn 来提交修改过的pom 文件到仓库。
1, 编译,测试通过。 或者说至少编译通过, 测试我们可以-Darguments="-DskipTests" 来跳过。
2, 依赖中没有SNAPSHOT 的项目。 这个比较好理解Release 一个项目意味着这个项目比较稳定了, 稳定的版本当然不能依赖不稳定的SNAPSHOT 了。
我们可以先执行 maven release:prepare -DautoVersionSubmodules=true -Darguments="-DskipTests"。 这个 prepare 完成的事情主要包括:
1, 更新pom 文件将其中的x-SNAPSHOT 版本更新成 x 版本; 将pom中的
2, 更新pom 中的tag 的引用。
3, 由于我们的项目涉及到多个子module, 所以会不仅是parent 的pom , 子module 的pom 也会修改。 -DautoVersionSubmodules=true 就是起这个作用,不需要每一个子module 都输入版本, 直接使用paren的版本就好。
4, 编译并且test 代码。 我们可以通过 -Darguments="-DskipTests"来跳过。
5, 产生backup 文件。
6, 提交pom。
7, 升级pom 中的版本 x 到下一个 SNAPSHOT 版本。
当然在这个过程中 mvn 会提示我们输入 tag 的名字, release 的版本 ,下一个 SNAPSHOT的版本。 我们可以直接回车使用mvn提供的默认值就ok。
如果一切都ok, 我说的是如果,这个过程会有两次提交pom 文件。 一次 x-SNAPSHOT 到x release 版本。 一次是 x -release 到 x + 0.0.1 SNAPSHOT 版本。 如果中间有错误 我们可以通过 mvn release:rollback 来回滚。一般来将如果有啥意外, 它打出来的那个tag 里面的pom 文件也会有问题。 需要double check 那个tag 里面的pom 文件。
我们必须按照项目的依赖顺序, 先将它的所有依赖 发布好版本, 然后将项目pom 的依赖改成release 版本,然后再来做它自己的版本发布。 比如 项目 B- 1.0.0-SNAPSHOT 依赖 A-1.0.1-SNAPSHOT。 我们必须先将 A 发布一个 A-1.0.1 版。 然后将 B-1.0.0-SNAPSHOT 中pom 文件的A 的依赖版本改成 从 1.0.1-SNAPSHOT 改成 1.0.1 然后再来发布 B。
下一步就是 执行 mvn release:perform 。 本人的做法用 mvn clean deploy 来代替。 先check out 那个打出来的tag 的代码。 然后在那个目录下执行 mvn clean deploy 就可以发布jar 到 nexus 上面了。
分享到:
相关推荐
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,...于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,...于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。...于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。 Maven的主要目标是允许开发人员理解完整的 在最短的时间内完成开发...
在实际的开发当中,Myeclipse中的project越来越庞大,所依赖的第三方Jar包越来越多,这显得Project很臃肿,给项目管理带来了很大不便,尤其实在一些大些项目。为了解决上述问题,Apache开源组织 早在几年前就发布了...
Maven是一个流行的项目管理工具,用于帮助Java开发人员构建、发布和管理项目。它提供了一种标准化的方式来构建项目、管理依赖、运行测试、生成文档等,使得项目的构建过程更加自动化和规范化。 Maven基于项目对象...
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。...于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
管理员:个人中心、学生信息管理、教师信息管理、教学资源管理、教学反馈管理、教学答疑管理、作业发布管理、作业管理、我的收藏管理、管理员管理、留言板管理、论坛管理、系统管理,教师信息;个人中心、教学资源...
管理员:个人中心、学生信息管理、教师信息管理、教学资源管理、教学反馈管理、教学答疑管理、作业发布管理、作业管理、我的收藏管理、管理员管理、留言板管理、论坛管理、系统管理,教师信息;个人中心、教学资源...
Maven 是一种流行且功能强大的项目管理工具,主要用于构建、发布和管理 Java 项目。本文将介绍 Maven 的基本概念、核心功能和优势,以及它在项目开发中的重要作用。 第一部分:Maven 的基本概念 解释 Maven 的基本...
课程介绍 一、课程用到的软件: 1、jdk 1.8 2、eclipse neon 3、tomcat 8 4、jetty 5、MySQL 6、navicat 9+ 二、课程涉及到的技术点 1、Maven基础 ...第12课 使用Maven管理新闻系统开发-项目完善
何为Maven 构建,依赖管理,项目信息聚合 Maven核心概念 坐标,依赖,仓库,生命周期,插件 Maven最佳实践 创建、打包、发布、版本管理 项目实战 Nexus(Todo…) M2eclipse(Todo…)
Apache Maven 3.6.3 ...根据项目对象模型的概念:建立,依赖管理,文档制作,现场发布和分发出版物都是从控制 的pom.xml的声明文件。插件可以扩展Maven, 以利用许多其他开发工具来报告或构建过程。
Maven是一个流行的Java项目管理工具,它提供了一种结构化的方式来管理Java项目的构建、依赖、文档和发布。Maven基于项目对象模型(Project Object Model,POM)来管理项目,通过定义一系列规范化的目录结构和配置...
Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中心位置管理项目的构建,报告和文档。 核心版本独立于可用的插件。更多的插件将分开发布。查看插件列表以获取更多信息
在源代码管理中跟踪Apigee Config(KVM,缓存,目标服务器等) 在CI管道中部署配置更改以及API 在API开发过程中简化并自动化配置管理跟踪产品环境中发布的配置更改小型API项目可以使用edge.json中的单一文件格式来...
Apache Maven 3.6.0 已发布,Apache Maven 是一个项目管理和构建工具。基于项目对象模型(POM)的概念, Maven 可以从中心位置管理项目的构建、报告和文档。
第12章:编写自定义插件/12.4 使用自定义插件/12.4.1 在新建的Maven项目中引用自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.2 测试自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.3 ...
java-springboot-基于springboot的疫苗发布和接种预约系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,springboot,vue,ajax,maven,mysql,MyBatisPlus等 2、系统的实现 用户信息 图片素材 视频素材 摘...
Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等...