使用ant自动更新svn,编译,提交svn

最近转行到数据库上面,开始做数据库相关工作.每天需要生成数据库->实体

而且要导入svn.这样重复的劳动,经常让人受不了.

为了方便,研究了一下ant,发现可以使用这个工具,自动上传svn,很是方便

废话不多说,开工啦

1. 从网上下载svnant 包(我的是svn1.6,目前svnant最高只支持1.6了,1.7的就用别的代替吧,我还没研究过),下载地址:

http://subclipse.tigris.org/files/documents/906/49042/svnant-1.3.1.zip

将下载好的svnant 解压将 lib目录下的所有jar复制到ant主目录中的 lib目录下。

2.编写build.xml

要svn task任务可以使用要在build.xml中添加

 

<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" />  

 代码如下:

为了减少修改,我们最好使用properties

我这里命名为build.properties,其实可以随意命名的

将一些东西放在这里,减少修改build.xml

 

##这里放你的项目名称,所谓生成jar名称
prop.project.name=ctasdto
##ant位置
ant.path=D:/apache-ant-1.8.2/lib
##服务器位置
server.path=D:/webapp-server/apache-tomcat-6.0.20
## 你放jar的位置啦
dto.path=D:/work/XXX/output
## 你的svn路径
svn.url=https://XXXX/svn/
## SVN用户名
svn.user=xiaoxiao
## SVN密码
svn.passwd=password

 下面的是build.xml内容了

 [因为还需要生成文件,所以使用eclipse自带的编译,这里只打包,上传]

 

<?xml version="1.0" encoding="gbk"?>

<project name="ctasdto" default="svn"  basedir=".">
    <!-- 加载Property文件中的内容,大部分需要修改的内容都放到Property文件中 -->
	<property resource="build.properties" />
	<property name="project.name" value="${prop.project.name}"/>
	<property name="src.dir" value="src" />
	<property name="classes.dir" value="classes"/>
	<property name="javadoc.dir" value="docs"/>
	<property name="obj.dir" value="${prop.dto.path}"/>
	<property name="jar.name" value="${prop.project.name}.jar"/>
	<property name="lib.dir" value="lib"/>
	<property name="svn.url"           value="${prop.svn.url}"/>
	<property name="svn.user"          value="${prop.svn.user}"/>
	<property name="svn.passwd"        value="${prop.svn.passwd}"/>
	<tstamp>
		<format property="buildtime"  pattern="yyyy-MM-dd-HH:mm:ss"/>
	</tstamp>
        <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" />
        <!-- 设置svn相关属性 -->  
        <svnSetting id="svn.setting" svnkit="true" username="${svn.user}" password="${svn.passwd}"  javahl="false" />  
	<target name="svn.update" description="更新本地工程,以便后续编译">
		<echo>更新${obj.dir}中的所有信息</echo>
		<svn refid="svn.setting">  
            <checkout url="${svn.url}" destPath="${obj.dir}" force="true"/>  
        </svn>  
	</target>
	<target name="clear" depends="svn.update" description="删除DTO文件,之后会重新生成">
	 <delete file="${obj.dir}\${jar.name}"/>
	</target>
	<target name="copyfile" depends="clear" description="拷贝源文件到classes中">
		<copy todir="${classes.dir}">
		   <fileset dir="${src.dir}">
  <!--排除列表-->
		   	<exclude name="**/**"/>
		   	</fileset>	
		</copy>
		</target>
	<target name="build" depends="copyfile" description="包装成jar文件" >
		<jar jarfile="${obj.dir}/${jar.name}" basedir="${classes.dir}" >
             <!--这里写要加入文件位置-->
			<include name="**/**"/>
			<include name="config/databaseconfig/**"/>
			<manifest>
				<attribute name="Project-Name" value="${project.name}"/>
				<attribute name="Project-Version" value="1.0"/>
				<attribute name="Project-BuildTime" value="${buildtime}"/>
			</manifest>
		</jar>
	</target>
	<target name="svn" depends="svn.update,clear,copyfile,build" description="上传svn">
		<svn refid="svn.setting">
			<commit file="output/${jar.name}" message="自动提交最新的dto.jar  ${buildtime}"/>
		</svn>
	</target>
		
</project>

猜你喜欢

转载自weixiao2013.iteye.com/blog/1902229