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

使用ant脚本编译web工程并自动部署到tomcat

2016-12-06 14:17 791 查看
今天老大让我写个脚本将svn上的web工程编译打包并部署到tomcat服务器,于是一个完全完全的小白就开始学习ant了。

一.首先第一步准备条件:

1.配置好jdk环境变量;

2.配置好ant环境变量;

3.配置好tomcat环境变量,不配置可以用写死的路径;

二.编写build.xml

在工程根目录下创建build.xml,并进行如下配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!--定义一个工程-->
<project name="myProject" default="deploy" basedir=".">
<!--设置环境变量前缀为env-->
<property environment="env"/>
<property name="webapp.name" value="myProjectName" />
<!--指定tomcat服务器位置-->
<!--<property name="tomcat.dir" value="${env.CATALINA_HOME}" />-->
<!--指定ant位置-->
<property name="ant.dir" value="${env.ANT_HOME}"/>
<!--指定jdk位置-->
<property name="jdk.dir" value="${env.JAVA_HOME}"/>
<!--指定几个关键目录的位置-->
<property name="webContent.dir" value="${basedir}/WebContent"/>
<property name="java.dir" value="${basedir}/src/main/java"/>
<property name="resources.dir" value="${basedir}/src/main/resources"/>
<property name="lib.dir" value="${basedir}/WebContent/WEB-INF/lib"/>
<!--将war包生成到工程根目录下的dist文件夹中-->
<property name="dist.dir" value="${basedir}/dist" />
<property name="build.dir" value="${basedir}/build"/>

<!--初始化classpath-->
<path id="project.classpath">
<fileset dir="${basedir}/WebContent/WEB-INF/lib">
<include name="**/*.jar" />
</fileset>
<!-- ant lib包  -->
<fileset dir="${ant.dir}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${jdk.dir}">
<include name="**/*.jar"/>
</fileset>
</path>

<!-- 删除之前tomcat中的目录结构 -->
<target name="clear" description="清理旧文件">
<delete dir="${build.dir}" />
<echo message="build清理完成"/>
<delete dir="${dist.dir}" />
<echo message="dist清理完成"/>
<delete file="${tomcat.dir}/webapps/${webapp.name}.war" />
<echo message="tomcat webapp下war包清理完成"/>
<delete dir="${tomcat.dir}/webapps/${webapp.name}" />
<echo message="tomcat webapp下工程清理完成"/>
</target>

<!-- 创建目录结构 -->
<target name="init" depends="clear" description="创建初始化目录结构">
<mkdir dir="${build.dir}/classes" />
<echo message="build下classes创建完成"/>
<mkdir dir="${dist.dir}" />
<echo message="dist创建完成"/>
</target>

<!-- 编译java -->
<target name="compile" depends="init" description="编译java文件">
<echo message="开始编译..." />
<javac srcdir="${basedir}/src" destdir="${basedir}/build/classes" includeantruntime="false"
source="1.8" target="1.8" debug="true" encoding="UTF-8">
<classpath refid="project.classpath"></classpath>
<compilerarg value="-Xlint:unchecked"/>
<!--给编译器指定编码,防止出现:"警告: 编码 GBK 的不可映射字符"-->
<compilerarg line="-encoding UTF-8 "/>
<compilerarg value="-XDignore.symbol.file"/>
</javac>
<copy todir="${build.dir}/classes">
<fileset dir="${java.dir}">
<include name="**/*.xml" />
<include name="**/*.properties" />
<include name="**/*.sql" />
<include name="**/*.java"/>
<include name="**/*.class" />
</fileset>
<fileset dir="${resources.dir}">
<include name="**/*.*" />
</fileset>
</copy>
<echo message="编译完成..." />
</target>

<!-- 打成war包, 名称默认为 项目名 -->
<target name="war" depends="compile" description="将工程打成war包">
<echo message="开始打war包..." />
<war destfile="${dist.dir}/${webapp.name}.war" basedir="${webContent.dir}"
webxml="${webContent.dir}/WEB-INF/web.xml">
<lib dir="${lib.dir}" />
<classes dir="${build.dir}/classes" />
<fileset dir="${webContent.dir}">
<include name="***.*" />
</fileset>
</war>
<echo message="打war包完成..." />
</target>

<!-- copy war包 tomcat的deploy目录 -->
<target name="deploy" depends="war" description="部署项目">
<echo message="开始部署..." />
<copy file="${dist.dir}/${webapp.name}.war" todir="${tomcat.dir}/webapps" />
<echo message="部署完成..." />
</target>
<!--使用命令"ant -f build.xml -v" 在打log模式下进行编译-->
<record name="ant.log" loglevel="info" append="no" action="start"/>
</project>
参考上边的配置修改你的build.xml,在当前目录打开命令窗口,执行ant -f build.xml -v(日志模式下进行编译)或者ant,查看编译情况,由于多种因素完全参考出错在所难免,修正错误后,就算完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ant ant编译web工程