查看更多教程 https://on itroad.com
build.xml 文件
这是构建文件示例,其中包含将应用程序打包为 war 文件所需的所有参数。
根据要求随意修改它。
<?xml version="1.0" ?> <project name="AntWarFileExample" default="war"> <path id="compile.classpath"> <fileset dir="WebContent/WEB-INF/lib"> <include name="*.jar"/> </fileset> </path> <target name="init"> <mkdir dir="build/classes"/> <mkdir dir="dist" /> </target> <target name="compile" depends="init" > <javac destdir="build/classes" debug="true" srcdir="src"> <classpath refid="compile.classpath"/> </javac> </target> <target name="war" depends="compile"> <war destfile="dist/MyWebApplication.war" webxml="WebContent/WEB-INF/web.xml"> <fileset dir="WebContent"/> <lib dir="WebContent/WEB-INF/lib"/> <classes dir="build/classes"/> </war> </target> <target name="clean"> <delete dir="dist" /> <delete dir="build" /> </target> </project>
build.xml - 更多配置示例
根据需要使用片段或者整个文件。
它对构建战争文件的各个步骤有更深入的控制。
<project name="AntWarFileExample" basedir=".." default="war"> <!-- project-specific variables --> <property name="jsp.dir.name" value="myapp" /> <property name="package.name" value="${jsp.dir.name}.war" /> <property name="webapp.dir" value="/Users/al/tomcat-6.0.16/webapps" /> <property environment="env" /> <property name="build.dir" value="build" /> <property file="${build.dir}/build.${env.HOSTNAME}" /> <property name="lib.dir" value="lib" /> <property name="pages.dir" value="pages" /> <property name="src.dir" value="src" /> <property name="src.tests.dir" value="src-tests" /> <property name="resources.dir" value="resources" /> <property name="dest.dir" value="target" /> <!-- put everything in a temp folder with the right structure during the build --> <property name="temp.dir" value="temp" /> <property name="temp.dir.web-inf" value="${temp.dir}/WEB-INF" /> <property name="temp.dir.lib" value="${temp.dir.web-inf}/lib" /> <property name="temp.dir.classes" value="${temp.dir.web-inf}/classes" /> <property name="temp.dir.meta-inf" value="${temp.dir}/META-INF" /> <property name="package.file" value="${dest.dir}/${package.name}" /> <path id="build.class.path"> <fileset dir="lib"> <include name="**/*.jar" /> </fileset> </path> <target name="clean"> <delete> <fileset dir="${dest.dir}" includes="**/*"/> </delete> <delete dir="${temp.dir}" /> <delete dir="${temp.dir.classes}" /> <delete dir="${temp.dir.meta-inf}" /> <delete dir="${temp.dir.web-inf}" /> </target> <target name="prepare" depends="clean"> <mkdir dir="${dest.dir}" /> <mkdir dir="${temp.dir}" /> <mkdir dir="${temp.dir.lib}" /> <mkdir dir="${temp.dir.meta-inf}" /> <mkdir dir="${temp.dir.web-inf}" /> <mkdir dir="${temp.dir.classes}" /> </target> <!-- COMPILE --> <target name="compile" depends="prepare"> <echo>=== COMPILE ===</echo> <echo>Compiling ${src.dir} files ...</echo> <javac debug="on" srcdir="${src.dir}" destdir="${temp.dir.classes}" includes="**/*"> <classpath refid="build.class.path" /> </javac> <!-- compile files on the src-tests path --> <echo>Compiling ${src.tests.dir} files ...</echo> <javac debug="on" srcdir="${src.tests.dir}" destdir="${temp.dir.classes}" includes="com/**"> <classpath refid="build.class.path" /> </javac> </target> <!-- PACKAGE --> <target name="package" depends="compile"> <echo>=== PACKAGE ===</echo> <!-- copy the config files --> <copy file="${resources.dir}/MANIFEST.MF" tofile="${temp.dir.meta-inf}/MANIFEST.MF" overwrite="true" /> <copy file="${resources.dir}/web.xml" tofile="${temp.dir.web-inf}/web.xml" overwrite="true" /> <copy file="${resources.dir}/managed-beans.xml" tofile="${temp.dir.web-inf}/managed-beans.xml" overwrite="true" /> <copy file="${resources.dir}/navigation-rules.xml" tofile="${temp.dir.web-inf}/navigation-rules.xml" overwrite="true" /> <copy todir="${temp.dir.classes}"> <fileset dir="${src.dir}"> <include name="**/*.xml"/> <include name="**/*.xsl"/> </fileset> </copy> <!-- the ant war task. with all resources in place, create the war file --> <war destfile="${package.file}" webxml="${temp.dir.web-inf}/web.xml" basedir="${temp.dir}"> <fileset dir="${pages.dir}"/> <lib dir="${lib.dir}" /> <classes dir="${temp.dir.classes}" /> </war> </target> <!-- INSTALL --> <target name="war" depends="package"> <echo>=== PACKAGING WAR ===</echo> <copy file="${package.file}" tofile="${webapp.dir}/${package.name}" overwrite="true" /> </target> </project>
运行ANT构建
要运行构建,我们有两个选择
- 从命令提示符运行。要运行的命令是:
$ ant -f build.xml
- 从eclipse运行。选择此菜单选项。
右键点击build.xml -> Run as -> Ant build
将运行构建脚本,我们将在控制台/命令提示符中看到此构建过程输出。
Buildfile: C:\Users\lokesh\workspace\MyWebApplication\build.xml init: [mkdir] Created dir: C:\Users\lokesh\workspace\MyWebApplication\dist compile: [javac] C:\Users\lokesh\workspace\MyWebApplication\build.xml:16: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds war: [war] Building war: C:\Users\lokesh\workspace\MyWebApplication\dist\MyWebApplication.war BUILD SUCCESSFUL Total time: 829 milliseconds
我们可以在dist
文件夹中验证生成的war 文件(或者如果我们更改了路径,则检查该位置)。
创建要构建的应用程序
我在 eclipse 中创建了一个带有几个文件的 java web 应用程序项目。
一个文件在源文件夹中,其他文件在WEB-INF
文件夹中,例如web.xml
。
安装ANT
- 从 ant.apache.org 下载 Apache Ant。
- 将 zip 文件解压缩到我们选择的目录结构中。
- 将
ANT_HOME
环境变量设置为此位置。 - 在你的
PATH
环境变量中包含%ANT_HOME%/bin
目录。 - 通过打开命令行并在推荐行中输入“ant -version”来检查安装。
$ ant -version Apache Ant(TM) version 1.10.2 compiled on February 3 2018
日期:2020-09-17 00:10:39 来源:oir作者:oir