## 系统环境
windows server2008
## 软件环境
tomcat 6 、java1.7、ant1.9.9(编译 java1.7 所需 ant 版本不能高于1.9.9)
## 安装 ant 并设置系统环境变量
[ant下载地址: http://ant.apache.org/bindownload.cgi](http://ant.apache.org/bindownload.cgi)
解压后将 bin 目录设为全局变量
## 编写 build.xml
```
<project basedir="C:/Users/Administrator/Desktop/zhonglianlaoganbu" default="antwar" name="anttest">
<target name="init" description="设置初始化打 war 包需要的路径变量">
<property name="name" value="anttest"/>
<property name="src" value="${basedir}/src"/>
<property name="lib" value="${basedir}/WebContent/WEB-INF/lib"/>
<property name="webapp" value="${basedir}/WebContent"/>
<property name="build.src" value="${basedir}/AntBuild/ROOT/src"/>
<property name="build.dest" value="${basedir}/AntBuild/ROOT/WEB-INF/classes"/>
<property name="buildwar.dest" value="${basedir}/AntBuild/ROOT"/>
<property name="jar.dest" value="${basedir}/AntBuild/jar"/>
<property name="war.dest" value="${basedir}/AntBuild/war"/>
<!-- 打包后war包的名字 -->
<property name="war.dir" value="${war.dest}/ROOT.war"/>
<path id="classpath">
<fileset dir="${lib}">
<include name="*.jar"/>
</fileset>
</path>
</target>
<target name="prepare" depends="init" description="创建打包需要的路径,拷贝源文件到打包路径下">
<mkdir dir="${build.src}"/>
<mkdir dir="${build.dest}"/>
<mkdir dir="${buildwar.dest}"/>
<mkdir dir="${jar.dest}"/>
<mkdir dir="${war.dest}"/>
<copy todir="${build.dest}">
<fileset dir="${src}"/>
</copy>
<copy todir="${build.src}">
<fileset dir="${src}"/>
</copy>
<copy todir="${buildwar.dest}">
<fileset dir="${webapp}">
<exclude name="${webapp}/WEB-INF/lib/*.jar"/>
</fileset>
</copy>
</target>
<target name="build" depends="prepare" description="编译java文件,拷贝配置文件到编译后的路径下">
<javac srcdir="${build.src}" destdir="${build.dest}" includeantruntime="false" encoding="UTF-8">
<classpath refid="classpath"/>
<compilerarg value="-XDignore.symbol.file"/>
</javac>
<copy todir="${build.dest}">
<fileset dir="${build.src}">
<include name="product.properties"/>
</fileset>
</copy>
</target>
<target name="antwar" depends="clean,build" description="打war包">
<war warfile="${war.dir}" webxml="${buildwar.dest}/WEB-INF/web.xml">
<fileset dir="${buildwar.dest}">
<exclude name="${buildwar.dest}/WEB-INF/lib/**"/>
</fileset>
</war>
</target>
<target name="clean" depends="init" description="清除打包用临时文件">
<delete dir="${build.src}"/>
<delete>
<fileset dir="${build.dest}" includes="**/*.classes"/>
</delete>
<delete dir="${buildwar.dest}"/>
</target>
</project>
```
## 编写批处理文件
### 1、拉取新代码
将 git 下的 cmd 目录 设置全局变量,方便在批处理中执行 git 命令
### 2、编译打包
在 build.xml 的同一目录下执行 ant,会自动编译并生成 .war 文件
### 3、重新部署启动 tomcat
自动部署.bat
```
@echo off
call update.bat
call start_tomcat.bat
```
update.bat
```
@echo off
echo ***** 拉取代码 *****
git pull origin master
echo ***** 编译并打包 *****
ant
```
start_tomcat.bat
```
@echo off
echo ***** stop tomcat *****
taskkill /IM %JRE_HOME%\bin\java.exe /F
del /S /Q %CATALINA_HOME%\webapps\ROOT.war
rd /S /Q %CATALINA_HOME%\webapps\ROOT
move %AntBuild_DIR%\ROOT.war %CATALINA_HOME%\webapps
echo ***** start tomcat *****
call %CATALINA_HOME%/bin/startup.bat
```
catalina.bat
set JAVA_OPTS="-Dspring.profiles.active="production""