下载的相关包
ANT官网:http://ant.apache.org/ 下载Binary Distributions所需的版本 例如apache-ant-1.9.6
ANT的SVN插件: http://subclipse.tigris.org/svnant.html 下载与服务器svn对应的插件
安装
ANT安装:解压至任意文件夹,并在环境变量中配置ANT_HOME PATH。在cmd中输入ant若出现如下则表明配置完成。
Svn插件:将下载的svn插件包中的lib下jar文件拷贝至ant的lib中即可。
未知原因通过svnant插件一直报找不到相关jar错误,未成功。相关代码如下:
<property name="svnurl" value="http://svn.xxx.com/xxx" />
<property name="svn.username" value="username" />
<property name="svn.password" value="password" />
<path id="path.svnant">
<fileset dir="${basedir}">
<include name="**/*.jar"/>
</fileset>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
<target name="svncheckout" >
<svnSetting id="svnparams" username="${svn.username}" password="${svn.password}" javahl="true"/>
<svn refid="svnparams">
<checkout url="${svnurl}" destPath="${destPath}" />
</svn>
</target>
由于一直未成功,就先对项目源文件进行编译打包,如果svnant还是这样,可能会换其他方法代替。
总之整体build.xml流程思路是:在svn中checkout/export源码
- 对缓存文件夹进行操作:删除缓存文件夹,创建空缓存文件夹。文件夹结构视项目而定。
- 通过svn插件,在svn上下载最新的源码至缓存文件夹,如svnant插件,可以在ant的xml文件中使用checkout/export,export比较好。
- 编译项目中的java文件,将转换的class文件放至WEB-INF/classes。然后将其他相关文件转入相应的缓存文件夹中,若依赖包lib,jsp等。
- 打包为war文件至缓存文件夹。
- 关闭服务器->复制war到服务器webapps中->开启服务器
基本流程就是这些,下面把主要源码贴上。
<?xml version="1.0" encoding="UTF-8"?>
<project name="userver" basedir=".">
<!-- 根目录basedir f:/ -->
<!-- 目录属性配置 -->
<property name="destbuild" value="build" description="输出目标目录"/>
<property name="web" value="${destbuild}/WEB-INF" description="输出web目录"/>
<property name="web.class" value="${web}/classes" description="编译后class文件目录"/>
<property name="web.lib" value="${web}/lib" description="依赖jar包"/>
<property name="web.ext" value="${web}/ext" description="依赖jar包2"/>
<property name="userver" value="F:/xj/workspace/userver" description="工程目录"/>
<property name="src" value="${userver}/src" description="工程src目录"/>
<property name="webRoot" value="${userver}/WebRoot" description="工程web目录"/>
<property name="lib" value="${webRoot}/WEB-INF/lib" description="工程依赖jar包"/>
<property name="ext" value="${webRoot}/WEB-INF/ext" description="工程依赖jar包2"/>
<property name="j2ee.lib" value="${basedir}/xj/apache-tomcat-7.0.61/lib" description="j2ee包"/>
<property name="encoding" value="utf-8" description="编码"/>
<!-- 工程依赖的jar包引用-->
<path id="ext.path">
<fileset dir="${ext}">
<include name="*.jar"/>
</fileset>
<pathelement path="${userver}/WebRoot/WEB-INF/ext"/>
</path>
<path id="project.classpath">
<fileset dir="${lib}">
<include name="*.jar"/>
</fileset>
<fileset dir="${j2ee.lib}">
<include name="**/*.jar"/>
</fileset>
<pathelement path="${userver}/WebRoot/WEB-INF/lib"/>
<path refid="ext.path"/>
</path>
<!-- clean:删除缓存文件夹 -->
<target name="clean" >
<delete dir="${destbuild}"/>
</target>
<!-- init:创建缓存文件夹 -->
<target name="init" depends="clean" >
<mkdir dir="${destbuild}"/>
<mkdir dir="${web}"/>
<mkdir dir="${web.class}"/>
<mkdir dir="${web.lib}"/>
<mkdir dir="${web.ext}"/>
</target>
<!-- compile:编译java文件 -->
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${web.class}" source="1.7" target="1.7" debug="on" deprecation="false" optimize="false" failonerror="true">
<compilerarg line="-encoding UTF-8"/>
<classpath refid="project.classpath"></classpath>
</javac>
<!-- 复制源码中的非java文件 -->
<copy todir="${web.class}">
<fileset dir="${src}" excludes="**/*.java">
</fileset>
</copy>
<!-- 复制webroot中的非class文件到目标web -->
<copy todir="${destbuild}">
<fileset dir="${webRoot}" excludes="**/*.class">
</fileset>
</copy>
</target>
<!-- war:打包 -->
<target name="war" depends="compile">
<war destfile="${basedir}/${ant.project.name}.war" basedir="${destbuild}" webxml="${web}/web.xml"/>
</target>
<!-- 可以直接将包放入tomcat.webapps中,tomcat.shutdown copywar tomcat.start -->
</project>
注:编译过程出现错误,可能是source版本过低,相关依赖包未引入造成的。