Ant—使用Ant构建简单Java项目(二)

        博客《Ant—使用Ant构建简单Java项目(一)》演示了使用Ant工具构建简单的Java项目,接着这个例子来进一步学习Ant:

        上面例子需要执行多条ant命令才能运行Test类中的main函数,能不能简化需要执行命令呢?答案是肯定的,可以将build.xml文件中的脚本改成下面的脚本:

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="run-Test" basedir=".">

	<property name="src" value="src"/>
	<property name="lib" value="build/lib"/>
	<property name="dest" value="build/classes"/>
	<property name="np_jar" value="build/lib/test.jar"/>

	<target name="create-path">
		<mkdir dir="${dest}"/>
		<mkdir dir="${lib}"/>
	</target>

	<target name="create-class" depends="create-path">
		<javac srcdir="${src}" destdir="${dest}"/>
	</target>

	<target name="create-jar" depends="create-class">
		<jar destfile="${np_jar}" basedir="${dest}">
		   <manifest>
			  <attribute name="Main-Class" value="Test"/>
		   </manifest>
		</jar>
	</target>

	<target name="run-Test" depends="create-jar">
		<java classname="Test" classpath="${np_jar}"/>
	</target>

	<target name="clean">
		<delete file="${np_jar}"/>
		<delete dir="${dest}"/>
		<delete dir="${lib}"/>
	</target>
</project>
        这时只需执行ant命令就可以操作完成需要依次执行“ant create-path”、“ant create-class”、“ant create-jar” 和“ant run-Test”命令才能完成的操作,那么它是怎样做到的呢?

        a、由于project标签default属性定义的值为run-Test,所以当直接执行ant命令时ant会首先执行name为run-Test的target;

        b、由于name为run-Test的target中的depends属性指向name为create-jar的target,所以会先执行name为create-jar的target;

        c、由于name为create-jar的target中的depends属性指向name为create-class的target,所以会先执行name为create-class的target;

        d、由于name为create-class的target中的depends属性指向name为create-path的target,所以会先执行name为create-path的target;

        e、由于name为create-path的target没有depends属性,所以ant命令最终先执行该target。

        由此可见,此时单独执行ant命令其实就是依次执行了“ant create-path”、“ant create-class”、“ant create-jar” 和“ant run-Test”命令。

        DOS窗口单独执行ant命令的结果如下图:


你可能感兴趣的:(ant)