程序猿全敏的gravatar头像
程序猿全敏 2016-12-13 13:03:46
apache ant从svn下载代码并将其编译打包
  1. 解压文件夹apache-ant-1.8.2.rar,将解压的文件夹放在D盘
  2. 修改环境变量:右击计算机==》属性==》高级系统设置==》高级==》环境变量

在PATH中D:\apache-ant-1.8.2\bin    ANT_HOME中D:\apache-ant-1.8.2  

CLASSPATH中D:\apache-ant-1.8.2\lib

3.ant验证:win+R  --  cmd

  1. 输入如下命令:ant
  2. 如果出现如下内容,说明安装成功:
  3. Buildfile: build.xml does not exist!
  4. Build failed
  5. 说明ant安装成功!因为ant默认运行build.xml文件,这个文件需要我们建立。
  6. 查看版本:ant  -version
  7. 但如果出现 
  8. 'ant' 不是内部或外部命令,也不是可运行的程序或批处理文件
  9. 说明安装失败
  1. 拷贝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包   这个是IBM的WebSphere 发布用的,利用它的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>

ok。。去试试。需要apache-ant-1.8.2.rar的留下邮箱


打赏
最近浏览
qqww111  LV3 2018年12月20日
sincoolvip  LV1 2018年8月28日
203778513  LV9 2017年9月13日
wangyifan1100  LV6 2017年6月30日
sunman 2017年2月9日
暂无贡献等级
俏飘佳人  LV7 2017年1月6日
successzk  LV2 2017年1月3日
安安an  LV17 2016年12月27日
1819134078 2016年12月26日
暂无贡献等级
我不想当将军 2016年12月24日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友