`
xiaofengtoo
  • 浏览: 484171 次
  • 性别: Icon_minigender_1
  • 来自: xiamen
社区版块
存档分类
最新评论

ant svn 自动更新和发布

 
阅读更多

团队管理中,当项目非常多,而且发布频繁,手动发布往往非常繁琐,决定用自动化处理。

采用ant +svn+svnant

 

在网络上参考很多人的处理,组合成对自己比较实用的。

准备环境:

1、安装svn client 这个就不多说了。

2、安装ant,在这里我采用ant 1.8.3版本:http://ant.apache.org/

     官网上下载zip 解压缩,并配置环境变量。

 

3、下载svnant ,并解压缩 ,把对应的lib\jar包放入 ant lib 包中。

      下载地址: http://subclipse.tigris.org/files/documents/906/49042/svnant-1.3.1.zip

 

      这步很关键,不然svn命令运行不了!

 

思路:

       1、固定一个目录,专门做发布目录,根据不同项目,在期底下建立与项目名称相同的目录。

       2、建立build等目录,打成war包后删除对应的build包等操作

       3、自动发布到tomcat

 

以下代码实现的是J2EE web工程打包发布

 

<?xml version="1.0" encoding="UTF-8"?>

<project name="deploy" default="autodeploy" basedir=".">
	<property environment="env" />
	<property name="projectName" value="svnant" />
	<property name="temporary.dir" value="D:/SVNTest/${projectName}"/>

	<property name="deployVersion.dir" value="${temporary.dir}/deployVersion"/>
	<property name="tomcat.home" value="d:/apache-tomcat-6.0.32"/>
	<property name="ant-lib.dir" value="F:/apache-ant-1.8.3/lib"/>

	<property name="svn.url" 
                         value="http://subclipse.tigris.org/svn/subclipse/trunk/svnant/"/>
	<property name="svn.name" value="guest"/>
	<property name="svn.password" value=""/>

	<tstamp>
		<format property="deploy.time" pattern="yy-MM-dd HH.mm" />
	</tstamp>

	<delete dir="${temporary.dir}" />
	<mkdir dir="${temporary.dir}" />

	<path id="svnant.dir">
		<fileset dir="${ant-lib.dir}">
			<include name="ganymed.jar" />
			<include name="jna.jar" />

			<include name="svnant.jar" />
			<include name="svnClientAdapter.jar" />
			<include name="svnjavahl.jar" />
			<include name="svnkit.jar" />
		</fileset>
	</path>
	<!-- define the svn task-->
	<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask"
                       classpathref="svnant.dir" />
	<!-- prepare for the checking out:clean the directory  -->
	<target name="prepare"
		description="Prepare the dirs for the task">
		<delete dir="${temporary.dir}/${projectName}" />
		<mkdir dir="${temporary.dir}/${projectName}" />
	</target>


	<target name="checkout" depends="prepare">
		<echo>+=========checkout start============+</echo>
		<echo>+                                                                      +</echo>
		<echo>+                                                                      +</echo>
		<svn username="${svn.name}" password="${svn.password}" 
                         javahl="false" failonerror="false" svnkit="true">
			<checkout url="${svn.url}" revision="HEAD" 
                                         destPath="${temporary.dir}/${projectName}" />
		</svn>
		<echo>+                                                                      +</echo>
		<echo>+========= checkout end ============+</echo>
	</target>

	<target name="ant_app" depends="checkout">
		<echo>+ ======================== +</echo>
		<echo>+                                                       +</echo>
		<echo>+  anting application to war and ear +</echo>
		<echo>+                                                       +</echo>
		<echo>+ ======================== +</echo>
		<ant dir="./" antfile="build.xml" inheritall="off"/>
	</target>

	<target name="mv_to_pack" depends="ant_app">
		<delete dir="${deployVersion.dir}\${deploy.time}" />
		<mkdir dir="${deployVersion.dir}\${deploy.time}" />
		<move file="${temporary.dir}/${projectName}.war" todir="${deployVersion.dir}/${deploy.time}" />
	</target>
	<target name="execute" depends="mv_to_pack">
	</target>

	<!--shutdown-->
	<target name="shutdown" description="========shutdowntomcat===========">
		<exec executable="${tomcat.home}/bin/shutdown.bat" failonerror="false">
		</exec>
		<sleep seconds="1"/>
		<delete file="${tomcat.home}/webapps/${projectName}.war">
		</delete>
		<delete dir="${tomcat.home}/webapps/${projectName}">
		</delete>
	</target>

	<!--startup-->
	<target name="startup" depends="shutdown" description="========startuptomcat===========">
		<copy file="${deployVersion.dir}/${deploy.time}/${projectName}.war" todir="${tomcat.home}/webapps" />
		<sleep seconds="3"/>
		<exec executable="${tomcat.home}/bin/startup.bat" failonerror="false">
		</exec>
	</target>

	<!--autodeploy-->
	<target name="autodeploy" depends="execute,startup">
		<delete file="${temporary.dir}/${projectName}">
		</delete>
	</target>
</project>
 
<?xml version="1.0" encoding="UTF-8"?>
	<project name="ear" default="deploy" basedir=".">
	 <property environment="env" />
	 <property name="projectName" value="svnant" />	
	 <property name="temporary.dir" value="D:/SVNTest/${projectName}"/>

	 <property name="builder.dir" value="${temporary.dir}/builder" />
	 <property name="project.dir" value="${temporary.dir}/${projectName}" />	
		
	 <property name="src.dir" value="${builder.dir}/src" />
	 <property name="WebRoot.dir" value="${builder.dir}/WebRoot" />
	 <property name="classes.dir" value="${WebRoot.dir}/WEB-INF/classes" />
	 <property name="lib.dir" value="${WebRoot.dir}/WEB-INF/lib" />
		
	 <path id="build.classpath" description="complie 's classpath">
	  <fileset dir="${temporary.dir}/${projectName}/WebRoot/WEB-INF/lib">
	   <include name="*.jar" />
	  </fileset>
	 	<!-- junit jar -->
	 	 <fileset dir="E:\eclipse\plugins">
 		   <include name="org.hamcrest.core_1.1.0.v20090501071000.jar" />
 		  </fileset>
	 	
	 	 <fileset dir="E:\eclipse\plugins\org.junit_4.8.2.v4_8_2_v20110321-1705">
 		   <include name="junit.jar" />
 		  </fileset>
	 	
	  <pathelement location="${classes.dir}" />
	 </path>
		
	 <target name="copy-files" description="copy,java files">
	  <delete dir="${builder.dir}" />
	  <mkdir dir="${builder.dir}" />
	  <mkdir dir="${classes.dir}" />
	  <mkdir dir="${lib.dir}" />
	  <!-- 
	  <mkdir dir="${WebRoot.dir}/apps" />
	  -->
	  <mkdir dir="${src.dir}" />

	  <copy todir="${src.dir}" overwrite="YES"> 
	   <fileset dir="${project.dir}/src" />
	  </copy>

	  <copy todir="${WebRoot.dir}" overwrite="yes">
	   <fileset dir="${temporary.dir}/${projectName}/WebRoot" excludes=".svn" />
	  </copy>

	 
	 </target>

	 <!-- compile file to share lib -->
	 <target name="compile" depends="copy-files">
	  <mkdir dir="${classes.dir}" />
	 	
	 	
	  <javac fork="true" memoryInitialSize="256m" memoryMaximumSize="500m" srcdir="${src.dir}" destdir="${classes.dir}" includes="**" encoding="UTF-8" debug="true">
	   <classpath refid="build.classpath" />
	  </javac>
	  <copy todir="${classes.dir}">
	   <fileset dir="${src.dir}" excludes="**/*.java" />
	  </copy>
	 	<!-- resources -->	
		<copy todir="${classes.dir}">
		   <fileset dir="${temporary.dir}/${projectName}/config"/>
		</copy>
	 </target>

	 <!-- create the war  -->
	 <target name="web-war" depends="compile" description="create war">
	 	
	 	
	 	
	  <war destfile="${builder.dir}/../${projectName}.war" webxml="${WebRoot.dir}/WEB-INF/web.xml">
	   <fileset dir="${WebRoot.dir}">
	   </fileset>
	  </war>
	 </target>

	 <!-- create the ear   -->
	 <target name="ear" depends="web-war" description="create ear">
	 <!--
	  <ear destfile="${builder.dir}/../${projectName}.ear" 
	  	appxml="${basedir}/META-INF/META-INF/application.xml" 
	  	duplicate="preserve">
	   <fileset dir="${basedir}/META-INF" includes="**/*.*" />
	   <fileset dir="${builder.dir}/..">
	    <include name="${projectName}.war" />
	   </fileset>
	  </ear>
	  -->
	 </target>
 	
	 <target name="deploy" depends="ear">
	  <echo>+ ===================================================== +</echo>
	  <echo>+                                                       +</echo>
	  <echo>+  Building Complete, Cleaning Temporary Files......    +</echo>
	  <echo>+                                                       +</echo>
	  <echo>+ ===================================================== +</echo>
	  <delete dir="${builder.dir}">
	  </delete>
	 </target>

	</project> 
 

 

 

bat :

 

@echo off
del deploy.log
call ant -f ./deploy.xml -debug -l deploy.log

start  deploy.log
 

OK ,搞定!

分享到:
评论

相关推荐

    利用ant脚本 自动构建svn增量.docx

    标签: antsvn自动化测试发布  分类: ant 不会用ant打包、部署项目的工程师,不是一个好程序员(测试) 副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要...

    ant自动化发布脚本

    利用ant,自动化发布工程。具体过程包括:备份之前发布的工程,从svn checkout工程,编译工程,打包工程,关闭web服务器,删除已发布在web服务器的工程,复制打包的工程到web服务器,解压工程,启动web服务器。

    web程序自动部署

    该小程序可实现web项目的单机自动发布、集群自动发布。 原理:从svn down代码、ant编译、打包项目、上传zip包、代码同步、解压、重启web容器 由于开发的比较着急,代码写的有点乱、忘谅解,仅供参考。 代码分为两...

    jenkins安装使用手册(ant版)

    一个java web项目如何搭建持续集成环境,完成自动同步svn,编译java代码,远程发布的过程。

    网站架构技术

    发布过程自动化 ant maven. 自动化代码管理 svn cvs github 自动化测试 loadrunner hudson. 自动化安全测试 自动化部署 自动化报警 自动化失效转移 自动化失效...

    iuhyiuhkjh908u0980

    仿照Appfuse 提供一个完全自动化的ant构建脚本.在线SHOP的数据库建模图例已经 在博客中贴出.感兴趣的和我一起搭建,嘻嘻 文档博客地址: http://forum.sinomagazine.com 开发环境: Jcreator-4.5 JDK-1.5 Ant-1.6.1 ...

    【重大更新】用SWT/JFace实现的放大镜JZoomer V1.1.1(附源码)

    功能添加: ·添加用户手册中文版V1.1 ·添加用户手册英文版V1.1 ·添加ant编译文件,使用“ant package”即可轻松打包发布文件 ·调整system.properties的排版,方便阅读 3. 核心调整: ...

    java8源码-JavaCompile:Javacompile是一个自动增量/全量编译java的api接口应用。包含以下特性:全量编译增量编译

    传统的开发人员直接利用java编程工具直接对java进行编译,然后就是maven,ant等等工具对java编译。当然也少不了javac,我想大部分学习java的同学都是从javac来编译开始。 废话不多说,开始说正题。 自动化运维体系...

    cmake 基础教程 多平台工程构建工具

    一,初识 cmake Cmake不再使你在构建项目时郁闷地想自杀了. 1,背景知识: cmake是kitware公司以及一些开源...4,如果仅仅使用qt编程,没有必要使用cmake,因为qmake管理Qt工程的专业性和自动化程度比 cmake要高很多。

    Jenkins使用及插件开发介绍

    就是各种项目的的“自动化”编译、打包、分发部署,将以前编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址,将代码拉取到jenkins宿主机上,进行编译、打包和发布到web容器中。...

    基于JavaEE的快速开发框架

    目前看来,他确实已经毁灭了我之前的架构(封印在SVN上很久了),接下来就看看他如何创建一个新的体系了。 先说说核心思想,我一直向开发人员推荐面向接口的编程思想,因为我觉得这是一个很Nice的指导方向,可以让...

    [开源]用SWT/JFace实现的放大镜软件jZoomer v1.2.0(附源码)

    添加ant编译文件,使用“ant package”即可轻松打包发布文件 ·调整system.properties的排版,方便阅读 3. 核心调整: ·加入fatjar.jar架包,用于打包编译 4. 版本变更: 版本升级为1.1.1 &lt;br...

    maven window下安装包

    第9章:使用Nexus创建私服/9.4 Nexus的索引和构件搜索/9.4.1 自动下载索引文件 第9章:使用Nexus创建私服/9.4 Nexus的索引和构件搜索/9.4.2 手工下载索引文件 第9章:使用Nexus创建私服/9.4 Nexus的索引和构件搜索/...

Global site tag (gtag.js) - Google Analytics