自动拉取SVN项目代码并构建打包使用ant

  1. 解压文件夹apache-ant-1.8.2.rar,将解压的文件夹放在D盘
    修改环境变量:右击计算机==》属性==》高级系统设置==》高级==》环境变量
PATH   D:\apache-ant-1.8.2\bin    
ANT_HOME   D:\apache-ant-1.8.2  
CLASSPATH   D:\apache-ant-1.8.2\lib
  1. ant验证:win+R – cmd
    输入如下命令:ant
    如果出现如下内容,说明安装成功:
    Buildfile: build.xml does not exist!
    Build failed
    说明ant安装成功!因为ant默认运行build.xml文件,这个文件需要我们建立。
    查看版本:ant -version
    但如果出现
    ‘ant’ 不是内部或外部命令,也不是可运行的程序或批处理文件
    说明安装失败
    拷贝build.xml文件放在D盘根目录下,修改里面的svn路径以及svn的用户名密码,同时在D盘新建文件夹cfiles,该文件夹新建两个文件夹antTemp和publish,一个放从svn拷贝的项目,一个放打成war包的文件
  2. 运行xml文件:win+R --cmd 先找到build.xml的目录下然后输入如下命令:
ant -buildfile build.xml;

build.xml文件

<?xml version="1.0" encoding="utf-8"?>
<project basedir="/cfiles/antTemp" name="myProject" default="packageWar">

	<!-- SVN相关属性 -->
	
	<!-- SVN 用户名-->
	<property name="svn.username" value="quanmin" />
	<!-- SVN密码 -->
	<property name="svn.password" value="Qm123456" />	
	<!-- SVN需要的一些jar包,我把它放到ant目录下了,你也可以放到其他目录	-->
	<property name="svn.libPath" value="d://apache-ant-1.8.2/svnlib" />
	<!-- SVN地址 -->
	<property name="svn.repository" value="https://192.168.10.123/svn/test" />
	<!-- 项目名称 -->
	<property name="projectName" value="testssm" />
	<!-- SVN检出目录 -->
	<property name="svn.checkoutDir" value="/cfiles/antTemp" />
	<property name="svn.checkOutProject" value="${svn.checkoutDir}/${projectName}" />
	
	
	<!-- 构建相关属性 -->
	<!-- war包保存目录 -->
	<property name="dir.warPath" value="/cfiles/publish" />
	<!-- javaee.jar包所在目录,如果是web项目的话,编译的时候会用到它,我把它放到ant目录下了,你也可以放到其他目录 -->
	<property name="dir.javaee" value="d://apache-ant-1.8.2/je" />
	<!-- 项目名称项目中源文件夹,我这里有两个,src和config,一个里边是java代码,一个是配置文件-->
	<property name="dir.src" value="${svn.checkOutProject}/src" />
	<!--property name="dir.config" value="${svn.checkOutProject}/config" /-->
	<!--WebRoot目录-->
	<property name="dir.web" value="${svn.checkOutProject}/WebRoot" />
	<!--项目依赖的jar包-->
	<property name="dir.lib" value="${dir.web}/WEB-INF/lib" />
	<!--编译后的class文件保存目录-->
	<property name="dir.classes" value="${dir.web}/WEB-INF/classes" />
	<property name="ContextRoot" value="ROOT" />
	
	<!-- 日期格式yyyyMMdd 主要是为了生成目录 -->
	<tstamp prefix="tempPro.">
		<format property="today" pattern="yyyyMMdd" />
	</tstamp>

	<!-- 项目编译依赖的jar包,包括lib下的jar和javaee.jar -->
	<path id="applib">
		<fileset dir="${dir.lib}">
			<include name="**/*.jar" />
		</fileset>
		<fileset dir="${dir.javaee}">
			<include name="javaee.jar" />
		</fileset>
	</path>

	<!-- SVNKit相关包lib -->
	<path id="svnlib">
		<fileset dir="${svn.libPath}">
			<include name="*.jar" />
		</fileset>
	</path>

	<!-- SVN检出项目代码  -->
	<target name="svnCheckout">
		<echo message="删除原始文件,重新Checkout" />
		<delete dir="${svn.checkOutProject}" />
		
		<echo message="Checkout最新代码" />
		<java classname="org.tmatesoft.svn.cli.SVN" dir="${svn.checkoutDir}" fork="true">
			<arg value="checkout" />
			<arg value="--username" />
			<arg value="${svn.username}" />
			<arg value="--password" />
			<arg value="${svn.password}" />
			<arg value="${svn.repository}/${projectName}" />
			<classpath refid="svnlib" />
		</java>
	</target>

	<!-- 删除classes目录,为编译构建做准备  -->
	<target name="clean">
		<delete dir="${dir.classes}" />
	</target>

	<!-- 编译构建项目 -->
	<target name="compile" depends="svnCheckout,clean">
		<echo message="编译Java文件" />
		<mkdir dir="${dir.classes}" />
		<!--
			如果有多个源码包的话,每个源码包都要编译,我这里只有src
			destdir:编译后的class文件保存目录
			srcdir:源码目录
			excludes:排除文件(这里将svn相关的一些文件排除)
			includeAntRuntime:指出是否应在类路径中包括 Ant 运行时程序库,默认为 yes
			classpath:导入需要使用的jar包
		-->
		<javac encoding="utf-8" destdir="${dir.classes}" srcdir="${dir.src}"
			excludes="**/.svn/**" includeAntRuntime="false">
			<classpath refid="applib" />
		</javac>
		
		<!--如果有多个源码包的话,每个源码包都要编译,我这里只有src-->
		<echo message="拷贝资源文件" />
		<copy todir="${dir.classes}" preservelastmodified="true">
			<!--fileset dir="${dir.config}" excludes="**/*.java">
			</fileset-->
			<fileset dir="${dir.src}" excludes="**/*.java">
			</fileset>
		</copy>
	</target>

	<!-- 打包 	-->
	<target name="packageWar" depends="compile">
		<war destfile="${dir.warPath}/${tempPro.today}/${projectName}.war"
			basedir="${dir.web}" />
		<!-- echo message="删除文件" />
		<delete dir="${svn.checkOutProject}" /-->
	</target> 

	<!-- 打包 
	<target name="makewar" depends="complie">  
        <war warfile="${build}/newbssqyl.war" webxml="${build}/WEB-INF/web.xml">  
        <lib dir="${build}/WEB-INF/lib">  
            <include name="**" />  
        </lib>  
        <classes dir="${build}/WEB-INF/classes"/>  
        <fileset dir="${build}"/>  
        </war>  
    </target>  
	-->
	 <!--压缩,打包
    <target name="packageWar" depends="compile" description="======compress j2ee war file======">
        <mkdir dir="${svn.checkOutProject}" />
        <war destfile="${dir.warPath}/${tempPro.today}/${ContextRoot}.war" webxml="${dir.web}/WEB-INF/web.xml">
            <fileset dir="${dir.web}" />
            <classes dir="${dir.classes}" />
            <lib dir="${dir.lib}" />
        </war>
    </target>-->
	<!-- 发布war包   这个是IBMWebSphere 发布用的,利用它的wsadmin发布,我这里是tomcat 所以注释掉了
	<target name="updateApp" description="Uninstall an Enterprise Application" depends="packageWar">
		 <sshexec host="192.168.1.123" username="useranme" password="password" trust="true" command="/opt/IBM/WebSphere/AppServer/profiles/BPS/bin/wsadmin.sh -instance instance -c  '$AdminApp update CRMBps_NEW_war app {-operation update -node nodeBPS  -contextroot ${ContextRoot} -contents ${dir.warPath}/${ContextRoot}.war}'" />
	</target>
	 -->
</project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值