build.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
default指定默认执行的任务
target表示的是每一项具体的任务
depends表示依赖于另一个任务A,在执行B的是会去先执行A
创建ant项目的流程
1.创建文件夹(ant标准)
src:存放源码
build:所有的文件信息都保存在这个文件夹
classes:编译好的所有文件保存在这个文件夹
dist:存放project.jar
2.将src文件夹的数据拷贝到build/src
3.编译源代码
4.将源代码打包为jar
5.直接运行程序
ant本身的属性:
ant.file
ant.home
ant.java.version
ant.project.name
ant.version
basedir
eclipse中配置ant
1.Ant:修改Documentation的URL
2.Ant->Runtime;设置Ant Home Entries为本地的Ant文件夹
3.新建javaproject
4.创建build.xml文件(open with Ant Edit文件)
5.建立如下project
6.右键执行
-->
<!-- 如果文件夹换名,应先执行删除文件夹deleteDir任务,在更换build文件名 -->
<project default="execute">
<!--使用属性定义相应的路径时,一定要使用location,会转换系统的分隔符-->
<property name="build.classes" location="${build.dir}/classes"></property>
<property name="build.src" location="${build.dir}/src"></property>
<property name="build.dist" location="${build.dir}/dist"></property>
<!-- 定义键值对实例
<property name="execute.class" value="ant.zttc.edu.cn.HelloWorld"></property>
-->
<!-- 路径不建议放在properties中定义;如果属性太多可以在外部文件中定义 -->
<property file="build.properties"></property>
<!--把环境变量中的参数导出到env这个变量中进行使用-->
<property environment="env"></property>
<target name="test">
<echo>${ant.home}</echo>
<echo>${ant.version}</echo>
<echo>${ant.java.version}</echo>
<echo>${env.catalina_home}</echo>
<echo>${env.java_home}</echo>
<echo>${env.OS}</echo>
</target>
<!-- 1.使用文件集:包含所有目录的所有文件 -->
<fileset id="src.path.set" dir="src" includes="**/*.*"></fileset>
<!-- 2.使用文件集:包含所有目录的所有文件 -->
<fileset id="src.path" dir="src">
<!--包含的文件-->
<include name="**/*.*"/>
<!--不包含测试文件-->
<exclude name="**/Test*"/>
<exclude name="**/test*"/>
</fileset>
<target name="deleteDir">
<delete dir="${build.dir}"></delete>
</target>
<target name="init" depends="deleteDir">
<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.dir}/src/">
<fileset refid="src.path"></fileset>
</copy>
</target>
<!--编译源文件-->
<target name="compile" depends="init">
<javac destdir="${build.classes}" srcdir="src"></javac>
</target>
<!--打jar包;为了让jar可运行,需要加入MANIFEST.MF文件中加入Main-Class-->
<target name="jar" depends="compile">
<jar destfile="${build.dist}/${jar.name}" basedir="${build.classes}">
<manifest>
<attribute name="Main-Class" value="${execute.class}"/>
<attribute name="Build-By" value="Sid"/>
</manifest>
</jar>
</target>
<!--执行任务,基于jar和copySrc任务-->
<target name="execute" depends="jar,copySrc">
<echo>基于类路径的classname来完成执行</echo>
<java classname="${execute.class}" classpath="${build.classes}">
<!--main函数的参数-->
<arg value="张三"/>
<arg value="李斯"/>
</java>
<echo>基于jar文件来完成执行</echo>
<java jar="${build.dist}/${jar.name}" fork="true">
<arg value="张三"/>
<arg value="李斯"/>
</java>
</target>
</project>
build.properties
build.dir=build
execute.class=ant.zttc.edu.cn.HelloWorld
jar.name=hello.jar