如果项目中依赖通过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 是一个强大的项目管理和构建工具,主要应用于Java开发领域。它通过使用一种标准化的项目对象模型(Project Object Model,POM),可以帮助开发者管理项目的依赖、构建过程以及报告。Apache Maven 3.8.1是Maven...
Apache Maven 是一个强大的项目管理工具,它主要用于Java项目的构建、依赖管理和项目信息管理。Maven 3.2.5是该工具的一个版本,发布于2014年,旨在提高构建效率,增强稳定性,并修复了前一版本的一些已知问题。 在...
与较旧的构建工具(例如Ant)(同样也是Apache项目)相比,Maven为开发人员提供了一种标准的方法来构建项目,对项目所包含的项目进行清晰的定义,发布项目信息的简便方法以及易于管理的项目项目库依赖项。...
在IT行业中,Maven是一个非常重要的工具,尤其对于Java开发者来说,它是项目管理和构建的首选。本篇将详细讲解如何在Mac系统上,特别是配备M1芯片的MacBook上安装Apache Maven 3.6.3。 Apache Maven是一个基于项目...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM),能够管理项目的构建、报告和文档,通过一套统一的构建生命周期和插件系统,极大地简化了软件...
Apache Maven 是一个强大的项目管理工具,广泛用于Java应用程序的构建、管理和依赖管理。Maven 3.9.6 是该工具的一个稳定版本,提供了一系列改进和优化,旨在提高开发效率和构建过程的可靠性。 Maven 使用一个约定...
Apache Maven 是一个强大的项目管理工具,它主要用于构建、管理和聚合Java项目。这个压缩包包含了Apache Maven的三个不同版本:3.3.9、3.5.3和3.6.1,这些都是Maven的重要里程碑版本。 1. **Maven 3.3.9**: Maven...
在Java开发领域,Maven作为一个强大的项目管理和构建工具,极大地简化了项目的构建过程。而Maven的核心就在于其插件系统,其中maven-compiler-plugin是极其关键的一环,它是负责Java源代码编译的插件。本文将详细...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和依赖关系。Maven 的目标是简化项目构建过程,通过标准化构建...
`proguard-maven-plugin`是Maven社区提供的一个插件,它集成了ProGuard的功能,使得在Maven项目中使用ProGuard变得更加方便。 要使用`proguard-maven-plugin`,我们需要在项目的`pom.xml`文件中添加插件配置。以下...
《 Maven 深度解析:基于maven-archetype-3.1.2-source-release的实践与探索》 Maven,作为Java世界中广受...通过不断的实践和探索,我们可以更好地利用Maven解决开发中的各种问题,实现更加灵活和高效的项目管理。
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM),能够管理项目的构建、报告和文档等过程。Maven 的出现极大地简化了Java开发过程中的依赖管理和...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和文档,极大地简化了软件开发过程。Maven 3.3.9是该工具的一...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它基于项目对象模型(Project Object Model,POM),能够管理项目的构建、报告和依赖关系。Maven 的目标是简化项目构建过程,通过标准化...
Maven是一个广泛使用的项目管理和构建工具,用于自动化构建、依赖管理和项目报告生成。 Maven的目标是提供一个声明式的项目对象模型(Project Object Model,POM),通过POM文件来管理项目的构建过程。POM文件定义...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。Maven 使用一种标准化的项目对象模型(Project Object Model,POM),通过依赖管理和项目生命周期的概念,使得构建、配置和管理Java项目...
Apache Maven 是一个强大的Java项目管理和综合工具,它简化了构建过程,通过标准化项目结构和自动化构建生命周期。在本文中,我们将深入探讨Maven的核心概念、安装步骤以及如何在实际项目中使用它。 **Maven核心...
Apache Maven 是一个强大的Java项目管理工具,它基于项目对象模型(Project Object Model,POM)的概念,能够自动化构建、依赖管理和项目信息管理。Maven 3.8.5 是该工具的一个版本,提供了许多增强的功能和修复了...
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,...于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。