使用Maven Release插件发布项目

《使用Maven插件修改工程版本号》中提到修改maven工程的版本号,最终没有一个完美的解决方案,其实最终修改好版本号之后还是需要使用deploy命令发布到私有Maven服务器上面的,Maven Release插件可以自动执行整个的发布过程,主要包括:将当前的SNAPSHOT版本号修改为正式版,然后在SCM服务器(SVN或git)上打一个该版本的tag,编译程序并自动生成jar包、source源码包和javadoc文档包然后发布到指定的maven服务器上,最后将当前的版本号增加为新的版本号并修改为SNAPSHOT,这样就相当于一个自动构建的流程了。

不过为了能够正常实现上面的流程,还需要注意几个地方:

1. 需要在本地安装一个scm客户端,这里使用了svn客户端,windows下推荐下载Subversion for Windows,需要跟项目存放的svn server的版本一致,在http://sourceforge.net/projects/win32svn/files/中列出了各种版本的客户端。安装之后需要确定在命令行下面可以正常执行svn命令。

2. 确保可以执行mvn deploy命令,需要在maven的配置文件中设置发布服务器端的用户名和密码,并且其id需要与项目pom文件中定义的distributionManagement下面的repository(正式版)和snapshotRepository(测试版)中的id一致。

3. 在父工程的pom.xml文件中定义scm信息及配置release plugin插件:
./pom.xml中的关键信息

 代码如下 复制代码

 <project>
     <!-- SCM信息 -->
     <scm>
         <!-- 只读的scm连接 -->
         <connection>scm:svn:http://192.168.1.200/svn/framework/trunk</connection>
         <!-- 可写的scm连接 -->
         <developerConnection>scm:svn:http://192.168.1.99/200/framework/trunk</developerConnection>
         <url>http://192.168.1.99/svn/framework/trunk</url>
     </scm>
 
     <!-- 设定团队Maven服务器  -->
     <distributionManagement>
         <repository>
             <id>nexus-releases</id>
             <name>Local Nexus Repository</name>
             <url>http://192.168.1.200:8080/content/repositories/releases</url>
         </repository>
         <snapshotRepository>
             <id>nexus-snapshots</id>
             <name>Local Nexus Repository</name>
             <url>http://192.168.1.200:8080/content/repositories/snapshots</url>
         </snapshotRepository>
     </distributionManagement>
 
     <!-- 编译配置 -->
     <build>
         <!-- 插件 -->
         <plugins>
             <!-- 发布插件 -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-release-plugin</artifactId>
                 <version>2.5.3</version>
                 <configuration>
                     <preparationGoals>package deploy</preparationGoals>
                     <autoVersionSubmodules>true</autoVersionSubmodules>
                     <!--  项目打 tag 的 scm 路径配置信息 -->
                     <tagBase>http://192.168.1.99/svn/lingsee.framework/tags</tagBase>
                     <!-- 不使用默认的profile -->
                     <useReleaseProfile>false</useReleaseProfile>
                     <!--  在发布时不检查是否提交 svn 的文件过滤配置 -->
                     <checkModificationExcludes>
                         <checkModificationExclude>.project</checkModificationExclude>
                         <checkModificationExclude>.settings</checkModificationExclude>
                         <checkModificationExclude>.classpath</checkModificationExclude>
                         <checkModificationExclude>**\.project</checkModificationExclude>
                         <checkModificationExclude>**\.settings</checkModificationExclude>
                         <checkModificationExclude>**\.classpath</checkModificationExclude>
                     </checkModificationExcludes>
                 </configuration>
             </plugin>
         </plugins>
     </build>
 </project>

设置好之后可以执行mvn命令,命令列表如下:

 release:clean 清除一些插件生成的相关文件
release:prepare 准备发布,相当于发布前的准备。此命令会首先去去掉版本号中的SNAPSHOT标志符,在svn服务器生成一个指定版本的tag,编译并打包项目
release:perform 正式发布提交
release:rollback 回滚,如果prepare的过程中出现了错误可以执行此命令回滚prepare的操作。有两点需要注意:一是在svn服务器上创建的tag无法删除;二是如果执行了release:clean命令的话,无法进行回滚
默认情况下Release插件会将源码和javadoc进行打包,如果想自己控制的话需要在插件的configuration中设置useReleaseProfile为false,这样跟直接使用mvn deploy进行项目发布的情况一致了。

时间: 2024-10-03 14:49:34

使用Maven Release插件发布项目的相关文章

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository.如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦.例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦.为了避免这些不必要的麻烦,通常我们会通过Nexus搭建私有的仓库.下面着重介绍下怎么通过mvn命令将程序打包并发布到私有仓库Nexus中.

将不确定变为确定~为什么发布项目时用release环境更好些

之前写过类似的文章,今天决定在简单的说说,在很多时候,我们在发布项目时,直接就发了,没有什么讲究,但我要说的是,VS为我们提供了一些工具,它可能希望我们在发布项目时要讲究一些,呵呵! 调试模式 发布(生产,运营)模式 这就是VS为我们提供的两个模式,当然你也可以根据团队的需要去建立其它的模式,但我和小微认为没那个必要了,呵呵,下面来看看这两种模式在什么时候会用. 首先,如果你在代码中没有用到debug,release,那事实上它们在发布时,这两种模式没有区别,但如果你的代码中用到了,那就不同了,

Android 急速发布项目到 JitPack

转载请标明出处: http://www.cnblogs.com/zhaoyanjun/p/5942616.html 出自[赵彦军博客] 2016/10/09   前言:以前写过一篇 Android studio 使用Gradle发布Android开源项目到JCenter 总结 ,这篇文章主要介绍如何把项目发布到 jcenter . 本身没有问题.直到后来,我看到鸿洋大神的博客 Android 快速发布开源项目到jcenter 这篇博客里面的方法比我的更简单,让我欣喜若狂.现在有一种方法比前面两种

通过MAVEN快速搭建一个项目(一)

                            通过MAVEN快速搭建一个项目 什么是MAVEN? MAVEN是一个软件管理工具.Maven项目中所有配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目,包括编译,构建,测试,发布,报告等等.目前也是最流行的项目管理工具. Maven与ant 的区别 MAVEN是项目管理工具,ANT只是项目构建工具.这点是本质的.ANT一般只会被用于项目的编译,构建,测试等.但是maven的功能远远高于ant除了以上功能以

第9章 maven的插件和生命周期

第9章 maven的插件和生命周期 本章介绍了maven生命周期.插件以及如何配置插件 9.1 生命周期 一般的项目都会经历这几个步骤:编译,测试,打包,部署,有些公司是手动方式,有些是自动化脚本方式,虽然方式类似,但不可能完全相同.maven对这些工作进行抽象和统一,总结了一套完善的生命周期. 9.1.1 三套生命周期 maven的三套生命周期分别是:clean.default.site,每个周期都分为多个阶段. 9.1.2 clean生命周期 1.pre-clean:执行清理前需要完成的工作

报错,求大神指点,发布项目的时候

问题描述 报错,求大神指点,发布项目的时候 2016-05-18 18:05:56.711:INFO:/:Initializing log4j system 2016-05-18 18:05:56.714:INFO:/:Could not find log4j configuration file "/WEB-INF/log4j.xml" in webapp context. Using default configurations. INFO: configuring "l

maven搭建多模块项目和管理

在eclipse下构建maven项目,该项目由多个子模块组成. 1.创建一个父项目 NEW -->project-->maven-->maven Project,点击下一步,进入new maven Project的Select project name and location界面 ,什么也不做,直接下一步到Select an Archetype界面. 在这个界面中选择maven-Archetype-site-simple,然后选择下一步,进入选择Enter a group id for

tomcat插件原理 流程-maven tomcat 插件 部署原理,及tomcat的访问流程??

问题描述 maven tomcat 插件 部署原理,及tomcat的访问流程?? 很久之前通过maven tomcat7 部署项目后,现在一启动tomcat 就默认访问此项目,想删除此项目..可找不到... 解决方案 找到tomcat的安装路径,删除你部署的项目不就好了

使用IntelliJ IDEA 14和Maven创建java web项目

原文:使用IntelliJ IDEA 14和Maven创建java web项目 http://mark.leanote.com/post/%E4%BD%BF%E7%94%A8IntelliJ-IDEA-14%E5%92%8CMaven%E5%88%9B%E5%BB%BAjava-web%E9%A1%B9%E7%9B%AE 安装Maven 下载安装 去maven官网下载最新版. 解压到安装目录. 配置 右键桌面的计算机图标,属性–>高级系统设置–>环境变量,添加M2_HOME的环境变量,然后将该