使用Maven发布项目

本文介绍如何使用maven发布项目到SVN,进而对项目进行版本控制。本文相关概念参考自《Maven最佳实践:版本管理

 

使用的开发环境如下(需要确定在命令行窗口里可以运行svn --version; mvn --version命令):

maven3.0.5 
TortoiseSVN-1.8.1安装时需要勾选安装svn命令行工具
SVN仓库(SvnRepo)需自行配置
Maven仓库(MavenRepo)使用SVN仓库搭建,具体过程可参考《使用SVN搭建Maven仓库

 

具体步骤如下:

1.使用TortoiseSVN打开远程SvnRepo,并创建如下目录



 

相关目录说明如下:

hi-maven后面将创建的maven项目名称
branch用于存放hi-maven的分支项目
tag用于存放hi-maven的已发布版本的项目
trunk用于存放hi-maven的主干项目,即当前修改中的最新版本的项目

 

2.在Eclipse里创建hi-maven项目,基本信息如下:

	<groupId>com.bingo.hello</groupId>
	<artifactId>hi-maven</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>hi-maven</name>
 

3.打开项目的pom.xml文件,添加如下配置:

 

相关变量设置(注意:project.svn.scm.url指向SvnRepo仓库,project.svn.maven.repository指向MavenRepo仓库):

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.svn.scm.url>http://your_host/SvnRepo</project.svn.scm.url>
  <project.svn.maven.repository>http://your_host/MavenRepo</project.svn.maven.repository>
</properties>

 

设置scm信息,指定存放主干项目的svn地址:

<scm>
  <url>${project.svn.scm.url}</url>
  <connection>scm:svn:${project.svn.scm.url}/${artifactId}/trunk</connection>
  <developerConnection>scm:svn:${project.svn.scm.url}/${artifactId}/trunk</developerConnection>
</scm>
 

设置部署信息,指定部署项目的Maven仓库(请自行在settings.xml里配置服务器身份认证信息):

<distributionManagement>
		<repository>
			<id>maven-release-repository</id>
			<name>Maven Release Repository</name>
			<url>svn:${project.svn.maven.repository}/release</url>
		</repository>
		<snapshotRepository>
			<id>maven-snapshot-repository</id>
			<name>Maven Snapshot Repository</name>
			<url>svn:${project.svn.maven.repository}/snapshot</url>
		</snapshotRepository>
</distributionManagement>
 

设置wagon插件,用于部署项目到SVN服务器上的Maven仓库:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-deploy-plugin</artifactId>
	<version>2.7</version>
	<dependencies>
		<dependency>
			<groupId>com.google.code.maven-svn-wagon</groupId>
			<artifactId>maven-svn-wagon</artifactId>
			<version>1.4</version>
		</dependency>
	</dependencies>
</plugin>

 

 

设置release插件,用于发布项目到SVN仓库:

注1:此插件需要使用svn.exe执行svn命令,因此必须确保在命令行窗口里可以执行svn命令

注2:此插件也可配置maven-scm-plugin使用javasvn执行svn命令,但是目前仅支持svn1.7

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-release-plugin</artifactId>
	<version>2.4.1</version>
	<configuration>
		<tagBase>${project.svn.scm.url}/${artifactId}/tag</tagBase>
	</configuration>
</plugin>

 

4.打开命令行窗口,切换到hi-maven项目根目录,运行mvn deploy命令,把项目部署到MavenRepo仓库。部署结果如下,因为当前项目版本号为0.0.1-SNAPSHOT,所以项目部署到了MavenRepo/snapshot目录下:

 

5.接着介绍项目发布。在项目根目录下,右键-->TortoiseSVN-->Import...,把项目导入SVN仓库的SvnRepo/hi-maven/trunk/hi-maven目录下作为主干项目。接着再右键-->SVN Checkout...,把刚才导入的项目重新checkout到项目根目录下(直接覆盖现有的文件),checkout出的项目如下:

 

6.在步骤4的命令行窗口里运行mvn release:prepare(在执行命令时会提示输入新的版本号等信息,直接选择默认值即可):

注1:运行此命令前,需要把所有已修改的文件签入SVN

注2:只能在命令行窗口运行此命令,如果在Eclipse里运行,会提示无法执行svn命令等错误

注3:如果报错,可再运行mvn release:rollback回滚前一次发布过程

 

运行此命令会执行如下操作:

(1) 把项目版本号改为0.0.1,然后上传到SvnRepo/hi-maven/tag/hi-maven-0.0.1/hi-maven/目录

(2) 把项目版本号改为0.0.2-SNAPSHOT,然后上传到SvnRepo/hi-maven/trunk/hi-maven/目录

 

7.接着在命令行窗口运行mvn release:perform发布项目,此命令将下载步骤6迁入的hi-maven-0.0.1项目到本地进行编译,然后把编译结果打包部署到maven仓库,如图(因为项目版本号为0.0.1,所以发布到MavenRepo/release目录下):

 

8.如果有需要,可运行mvn deploy,把hi-maven的0.0.2-SNAPSHOT部署到Maven仓库,如图:

 

 

顺便一提,如果不使用Maven,操作步骤如下:

1.把hi-maven(0.0.1-SNAPSHOT)迁入trunk/hi-maven目录下

2.把hi-maven(0.0.1-SNAPSHOT)手工部署到MavenRepo/snapshot目录下

3.修改版本号为0.0.1,把hi-maven(0.0.1)迁入tag/hi-maven-0.0.1目录下

4.把hi-maven(0.0.1)手工部署到MavenRepo/release目录下

5.修改版本号为0.0.2-SNAPSHOT,把hi-maven(0.0.2-SNAPSHOT)迁入trunk/hi-maven目录下

6.把hi-maven(0.0.2-SNAPSHOT)手工部署到MavenRepo/snapshot目录下

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值