`
xiaofengtoo
  • 浏览: 492990 次
  • 性别: 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

    【Ant脚本自动构建SVN增量】是一种高效且节省资源的软件开发实践,它使得开发和测试团队能够自动化处理从代码提交到构建、打包、再到部署的整个过程。使用Ant,一个基于XML的构建工具,可以创建可重复执行的脚本来...

    ant自动化发布脚本

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

    使用SVN,Ant制作发布版本

    本文旨在介绍如何利用Ant结合SVN来自动化制作发布版本的过程。 #### 二、Ant简介 Ant 是一款开源的Java构建工具,其全称为“Another Neat Tool”。它主要用于构建、测试和部署Java应用程序。Ant使用XML文件来定义...

    Ant+Junit+SVN的安装过程

    在本文中,我们将详细介绍如何配置Ant、JUnit和SVN,这三个工具在Java开发中的重要性以及它们的安装过程。 首先,Ant是一个基于Java和XML的构建工具,它的主要功能是管理和自动化项目的构建过程。Ant通过一个名为...

    Jenkins+SVN+Ant持续集成环境配置笔记.pdf

    Jenkins是一种开源的持续集成和持续交付的自动化服务器,可以帮助开发者快速发现和解决缺陷,提高软件质量并缩短发布周期。SVN(Subversion)是一种版本控制系统,用于管理源代码的版本历史,支持开发者团队协作开发...

    ant相关-svn-分支

    总的来说,Ant和SVN的结合使用,极大地提升了开发团队的效率,尤其是在多分支的项目中,能够实现代码的高效管理和自动化的构建流程。正确配置和使用这两个工具,能帮助开发者专注于代码编写,而非手动的构建和版本...

    自动获取svn代码并且编译发布

    标题和描述中提到的“自动获取svn代码并且编译发布”是一种常见的持续集成(CI)实践,它涉及自动化从版本控制系统获取源代码、构建应用程序、并进行发布的过程。以下是这个流程涉及的关键知识点: 1. **Subversion ...

    Ant & SVN task script

    Ant提供了一系列内置的SVN任务,这些任务可以帮助开发者轻松地执行SVN操作,如更新、提交、分支、合并等。这些任务都是通过调用SVN客户端工具来实现的,因此需要确保已经安装了SVN客户端并且可以被Ant访问到。 ####...

    svn ant cvs

    两者结合可以实现项目的自动化构建、部署和更新,大大提升了开发效率。现在我们来深入探讨一下"svn+ant自动下载、部署、上传"这一主题。 首先,Subversion(svn)的主要功能是跟踪和控制文件及目录的变更。它允许...

    根据SVN信息自动生成升级补丁包

    6. **自动化脚本**:为了实现自动化,开发者可能会编写批处理脚本或者使用构建工具(如Ant、Maven、Gradle等)的插件,来自动执行上述步骤,特别是当项目很大或者频繁发布更新时。 标签中的“源码”表明了这个过程...

    svn和weblogic的自动同步

    这样可以在SVN提交后自动触发构建和部署任务,从而实现真正的无人值守自动化。 #### 总结 通过上述步骤,我们可以有效地实现SVN与WebLogic服务器之间的自动同步。这不仅可以显著减少开发人员的手动操作,还能提高...

    ant一键构建工具

    总之,Ant作为Java开发中的重要工具,提供了强大的构建能力和灵活性,能够帮助开发者高效地管理项目生命周期,实现自动化构建。结合Subversion等版本控制系统,更可以实现版本控制与构建的无缝集成,为团队协作提供...

    jenkins+svn+maven构建

    第一种方法使用Jenkins的SSH插件连接远程主机,实现代码发布和回滚。第二种方法使用Jenkins的SVN插件连接SVN版本控制系统,实现代码回滚。 Jenkins持续集成意义 Jenkins的持续集成意义在于它可以自动化构建、测试...

    apache-ant 1.8.2

    SVNant是一个用于Apache Ant的Subversion(SVN)客户端库,它允许你在Ant构建脚本中执行Subversion操作,如版本控制的检查、提交、更新和合并。这对于版本控制集成到持续集成流程中非常有用,开发者可以在构建过程中...

    .Ant安装编译操作手册

    - **编写目的**:本文档旨在指导软件发布人员如何正确安装与配置Apache Ant,解决在安装与使用过程中可能遇到的问题,确保能够顺利地使用Ant对Flex/Java工程项目进行自动化编译与打包。 #### 二、环境说明 - **Ant...

    SVN 源码 地址

    - **Ant**:另一个强大的构建工具,支持XML构建脚本,用于自动化软件编译过程。 - **Commons**:一系列实用的Java类库,涵盖字符串处理、数学运算等多个领域。 - **Tomcat**:一款轻量级的Servlet容器,也是Java Web...

Global site tag (gtag.js) - Google Analytics