build.properties(如果属性很多,可以放在属性文件中,然后再build.xml中引用)
execute.class = org.test.ant.HelloWorld
jar.name =world.jar
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project default="execute">
<!--使用属性定义路径时,一定使用location,而不要使用value-->
<property name="build.dir" location="build"></property><!--name用${name}来引用,id用refid="id"来引用-->
<property name="src.dir" location="src"></property>
<property name="build.src" location="${build.dir}/src"></property>
<property name="build.classes" location="${build.dir}/classes"></property><property name="build.dist" location="${build.dir}/dist"></property>
<!--
<property name="execute.class" value="org.test.ant.HelloWorld"></property>
<property name="jar.name" value="hello.jar"></property>
-->
<!--如果属性过多,可以放在外部文件中定义,但路径location不建议放在外部文件中,引用外部properties属性文件,如下-->
<property file="build.properties"></property>
<!--文件集dir="."表当前目录,即build.xml所在的目录。includes="**/*.java" 表示包含当前目录及子目录下,所有以.java结尾的文件,id可以被引用-->
<fileset id="src.path" dir="." includes="**/*.java"></fileset>
<!--初始化,新建文件夹,直接写dir目录的写法-->
<target name="init0">
<delete dir="build"></delete><mkdir dir="build"/>
<mkdir dir="build/src"/>
<mkdir dir="build/classes"/>
<mkdir dir="build/dist"/>
</target>
<!--初始化,新建文件夹,通过${name}引用dir目录的写法-->
<target name="init">
<delete dir="${build.dir}"></delete><mkdir dir="${build.dir}"/>
<mkdir dir="${build.src}"/>
<mkdir dir="${build.classes}"/>
<mkdir dir="${build.dist}"/>
</target>
<target name="copySrc" depends="init">
<copy todir="${build.src}">
<fileset refid="src.path"></fileset><!--拷贝文件集,用refid引用id为src.path的文件集-->
</copy>
</target>
<target name="complie" depends="init">
<javac destdir="${build.classes}" srcdir="${src.dir}" ></javac>
</target>
<target name="jar" depends="complie">
<jar destfile="build/dist/hello.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="org.test.ant.HelloWorld"/>
<attribute name="Build-By" value="Sawliet"/>
</manifest>
</jar>
</target>
<target name="execute" depends="jar">
<echo>基于类路径的classname来完成执行</echo>
<java classname="${execute.class}" classpath="${build.classes}">
<arg value="jack"/>
<arg value="tom"/>
<arg value="steven"/>
</java>
<echo>基于jar文件执行</echo>
<java jar="${build.dist}/${jar.name}" fork="true"><!--使用jdk自带的编译,不使用ant编译-->
<arg value="jack"/>
<arg value="tom"/>
<arg value="steven"/>
</java>
</target>
<target name="test">
<property environment="env"></property>
<echo>${env.TOMCAT_HOME}</echo>
<echo>${env.OS}</echo>
<echo>${env.JAVA_HOME}</echo>
</target>
</project>
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
for(String arg:args)
{
System.out.println("hello--"+arg);
}
}
}