我使用ant build.xml构建我的简单war文件。
<?xml version="1.0" ?>
<project name="cellar" default="war">
<target name="init">
<property file="${user.home}/build.properties"/>
<property name="app.name" value="${ant.project.name}"/>
<property name="src.dir" location="src"/>
<property name="lib.dir" location="lib"/>
<property name="build.dir" location="build"/>
<property name="dist.dir" location="dist"/>
<property name="classes.dir" location="${build.dir}/classes"/>
<mkdir dir="${build.dir}"/>
<mkdir dir="${dist.dir}" />
</target>
<path id="classpath">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="compile" depends="init" >
<javac destdir="${classes.dir}" debug="true" srcdir="${src.dir}">
<classpath refid="classpath"/>
</javac>
</target>
<target name="war" depends="compile" >
<war destfile="${dist.dir}/${app.name}.war" webxml="${src.dir}/main/webapp/WEB-INF/web.xml">
<fileset dir="${src.dir}/main/webapp/"/>
<lib dir="${lib.dir}"/>
<classes dir="${classes.dir}"/>
</war>
</target>
<target name="clean">
<delete dir="${dist.dir}" />
<delete dir="${build.dir}" />
</target>
</project>
上面显示的ant build.xml非常有效。但是在路径标记中,如果我用dir =“$ {lib.dir}”替换dir =“lib”(在文件集标记内),那么构建失败,我得到如下所示的错误
建立失败 c:\ Java \ code \ Cellar \ build.xml:22:c:\ Java \ code \ Cellar \ $ {lib.dir}不存在。
有谁知道为什么会这样?
答案 0 :(得分:2)
类路径是在加载构建文件时定义的,而属性仅在执行init目标时定义。
将属性定义移到init
目标之外,或者在执行init
后执行的目标中移动文件集定义。