您的位置:首页 > 运维架构 > Tomcat

Apache Ant学习总结(二):使用Ant自动编译JavaWeb项目并打成war包发布到Tomcat中

2016-06-17 08:21 1081 查看
前言:如题所示,有时我们可能经常需要把JavaWeb项目进行编译,然后打包成war包并发布到Tomacat中进行测试。如果每次都人工进行操作的话,无疑是很麻烦的。这时我们可以通过编写一个自动化的Ant脚本,每次需要发布项目时只需要点击一下就可以完成了,非常方便测试项目的项目结构如下:


Ant脚本build_war.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="antwar" default="publish" basedir=".">
<!-- 打包生成的war名字 -->
<property name="war.name" value="Internationalisation" />

<!-- java源文件路径 -->
<property name="src.dir" value="${basedir}/src" />

<!-- webapp路径 -->
<property name="webapp.dir" value="${basedir}/WebContent" />

<!-- jar包路径 -->
<property name="lib.dir" value="${webapp.dir}/WEB-INF/lib" />

<!-- 编译源文件路径 -->
<property name="build.bin" value="${basedir}/AntBuild/bin" />

<!-- 准备webapp文件路径 -->
<property name="buildwar.dest" value="${basedir}/AntBuild/warsrc" />

<!-- 打包war文件路径 -->
<property name="war.dest" value="${basedir}/AntBuild/war" />

<!-- tomcat路径 -->
<property name="tomcat.home" value="D:\\apache-tomcat-7.0.68" />

<!-- classpath -->
<path id="classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${tomcat.home}/lib">
<include name="**/*.jar" />
</fileset>
</path>

<!-- 初始化 -->
<target name="init">
<mkdir dir="${build.bin}" />
<mkdir dir="${buildwar.dest}" />
<mkdir dir="${war.dest}" />

<!-- 复制静态文件 -->
<copy todir="${buildwar.dest}" overwrite="true">
<fileset dir="${webapp.dir}">
<exclude name="/WEB-INF/classes/**" />
</fileset>
</copy>
</target>

<!-- 编译源文件 -->
<target name="compile" depends="init">
<echo message="Build: " />
<javac srcdir="${src.dir}" destdir="${build.bin}" encoding="utf-8" includeantruntime="">
<classpath refid="classpath" />
</javac>

<!-- 复制编译后的文件 -->
<copy todir="${buildwar.dest}/WEB-INF/classes" overwrite="true">
<fileset dir="${build.bin}">
<include name="**/*.class" />
</fileset>
</copy>
</target>

<!-- 复制项目中的其他的一些资源文件 -->
<target name="copyResource" depends="compile">
<echo message="Copy resources: " />
<copy todir="${buildwar.dest}/WEB-INF/classes" overwrite="true">
<fileset dir="${basedir}/resources">
<include name="**/*.*" />
</fileset>
</copy>
</target>

<!-- 打war包 -->
<target name="build.war" depends="copyResource">
<echo message="Build war: " />
<war warfile="${war.dest}/${war.name}.war" webxml="${buildwar.dest}/WEB-INF/web.xml">
<fileset dir="${buildwar.dest}" />
</war>
</target>

<!-- 发布到tomcat -->
<target name="publish" depends="build.war">
<!-- 删除tomcat已发布的项目文件 -->
<delete dir="${tomcat.home}/webapps/${war.name}" />
<delete file="${tomcat.home}/webapps/${war.name}.war" />

<!-- 复制war文件到${tomcat.home}/webapps -->
<copy todir="${tomcat.home}/webapps" overwrite="true">
<fileset dir="${war.dest}">
<filename name="${war.name}.war" />
</fileset>
</copy>

<!-- 清除临时文件 -->
<delete dir="${build.bin}" />
<delete dir="${buildwar.dest}" />
<delete dir="${war.dest}" />

</target>

</project>

注:代码中有详细注释,因此就不多做解释了,如果对Ant的一些基础知识不太熟悉的话可以参考下我写的这篇文章:http://www.zifangsky.cn/444.html

关于在eclipse中如何执行ant脚本,可以参考下我的这篇文章:http://www.zifangsky.cn/431.html ,这里就不多说了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java Ant war