我正在尝试学习ant并在文档中找到example build file。
<project name="MyProject" default="dist" basedir=".">
<description>
simple example build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init"
description="compile the source">
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile"
description="generate the distribution">
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>
<target name="clean"
description="clean up">
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
我假设clean
步骤应该在init
步骤之前运行,但两个步骤都不依赖于另一步。 init
应该依赖clean
步吗?如果没有,蚂蚁如何知道正确的顺序?
答案 0 :(得分:1)
当运行此ant构建文件时,将不会执行clean目标。它不在依赖链中。您必须从命令行显式触发它,例如
ant -f _buildFile.xml clean
ant -f _buildFile.xml
我在bash文件中完成了这个操作。这是一个示例文件,因此,最终构建系统的运行方式并不一定。
也许做一个 dist 应该先清理(似乎合理),但那应该是 dist 依赖的一部分,而不是< em> init 目标。例如,您可能想要编译而不是执行 clean 。所以
<target name="dist" depends="clean, compile"...
或者您可以添加新目标 clean_dist ,并在那里添加依赖项。然后,您可以通过在命令行上指定目标来快速进行分发构建和实际分发构建。