Maven 在项目中的管理- 发布项目
如果项目中依赖通过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 上面了。 ?
?
?
?