查看更多教程 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 为 Java Web 应用程序项目构建 war 文件。

安装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