Ant的下载地址:http://ant.apache.org/bindownload.cgi
目录说明
Bin 包含运行脚本
Docs 文档
Etc 配置
Lib 运行需要的类库
Ant的测试
首先解压ANT到D:\19\ant下,编写一个ant的运行脚本build.bat在D:\19\,脚本具体如下:
rem —–设置ANT_HOME和JAVA_HOME
set ANT_HOME=ant
set JAVA_HOME=E:\jdk160rem —–将Apache Ant的bin路径添加到PATH环境变量中
set PATH=%PATH%;%ANT_HOME%\binant
主要是设置ANT_HOME和JAVA_HOME的路径,并将Ant的bin路径添加到PATH环境变量中。直接运行此脚本,如果看到:
Buildfile: build.xml does not exist!
Build failed
则编译脚本配置成功,之后开始编写build.xml。
PS:ant命令行使用举例
1)ant
使用当前目录下的build.xml运行Ant,执行缺省的target。
2)ant -buildfile test.xml
使用当前目录下的test.xml运行Ant,执行缺省的target。
3)ant -buildfile test.xml dist
使用当前目录下的test.xml运行Ant,执行一个叫做dist的target。
4)ant -buildfile test.xml -Dbuild=build/classes dist
使用当前目录下的test.xml运行Ant,执行一个叫做dist的target,并设定build属性的值为build/classes。
具体编译实例
具体编译实例,我现在所要做的是:
-编写一些程序
-编译它们
-把它打包成jar包
-把他们放在应该放置的地方
-运行它们
简写一个程序,Test.java程序代码如下,放在D:\19\src\blocks\app-test\com\ll19\test\Test.java下,最简单的Hello world程序:
1 2 3 4 5 6 7 8 9 | package com.ll19.test; public class Test { public static void main(String[] args) { System.out.println("Hello world!"); } } |
编写build.xml,具体的build.xml如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?xml version="1.0" encoding="UTF-8"?> <project name="19web" default="run" basedir="."> <!--资源应用名称--> <!--测试包--> <property name="test" value="app-test"/> <!--源文件夹--> <property name="src" value="src/blocks"/> <!--资源文件夹--> <property name="webapp" value="src/webapp"/> <!--编译后的class文件夹--> <property name="dest" value="build/19/blocks"/> <!--目标资源文件夹--> <property name="webappDest" value="build/webapp"/> <target name="usage"> <echo message="------------------------------------------------------"/> <echo message="build: 19web"/> <echo message="------------------------------------------------------"/> </target> <target name="init" depends="usage"> <mkdir dir="${dest}"/> <mkdir dir="${webappDest}"/> </target> <target name="copy" depends="init"> <copy todir="${webappDest}"> <fileset dir="${webapp}"/> </copy> </target> <target name="compile" depends="copy"> <!--includeantruntime指出是否应在类路径中包括 Ant 运行时程序库,默认为 yes --> <mkdir dir="${dest}/${test}"/> <javac srcdir="${src}/${test}" destdir="${dest}/${test}" includeantruntime="false"/> </target> <target name="build" depends="compile"> <jar jarfile="${webappDest}/WEB-INF/lib/${test}.jar" basedir="${dest}/${test}"/> </target> <target name="run" depends="build"> <java classname="com.ll19.test.Test" classpath="${webappDest}/WEB-INF/lib/${test}.jar"/> </target> </project> |
以下为逐行解释
Project节点(project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。):
1 | <project name="19web" default="run" basedir="."> |
project:
name工程名 。
basedir相对根目录,为以后创建目录做参照,“.”表示当前目录。
default表示默认的运行目标,这个属性是必须的。
这里 default=”run” 则默认运行target为run的标签,但上述的配置实例中,target为run的标签有依赖关系depends=”build”,之后的build又有依赖关系,以此类推,最后的执行顺序是:
usage→init→compile→build→run
之后的property节点是设置资源和build后的文件夹等各类参数:
1 2 3 4 5 6 7 8 9 10 | <!--资源应用名称--> <property name="appName" value="app-test"/> <!--源文件夹--> <property name="src" value="src/blocks/${appName}"/> <!--编译后的class文件夹--> <property name="dest" value="build/19/blocks/${appName}"/> <!--编译后的jar文件夹--> <property name="jarDir" value="build/webapp/WEB-INF/lib"/> <!--jar名称--> <property name="jarName" value="${appName}.jar"/> |
target的节点便是执行具体的编译任务:
首先“usage”:echo输出一些编译信息。
“init”mkdir创建编译用的目录。
“copy”复制源文件夹到编译后的目标文件夹中。
“compile”javac编译源文件夹(srcdir)的java文件到编译后(destdir)的目标文件夹中。
“build”jar为以basedir为根路径开始打jar包,输出到jarfile配置的路径中。
“run”java为运行classpath路径中的classname文件。
至此一个简单的编译-》打包-》运行的实例便配置完毕。运行后build\19\下面是编译后的class文件,19\build\webapp\WEB-INF\lib下是打完包的jar文件。
关于导入编译的jar包
首先设置类路径,并在src/webapp/WEB-INF/lib及lib下添加需要编译的jar包:
1 2 3 4 5 6 7 8 9 | <!--类路径设置--> <path id="project.classpath"> <fileset dir="src/webapp/WEB-INF/lib"> <include name="*.jar"/> </fileset> <fileset dir="lib"> <include name="*.jar"/> </fileset> </path> |
javac编译的时候引入此类路径,例如:
1 2 3 | <javac srcdir="${src}/${test}" destdir="${dest}/${test}" includeantruntime="false"> <classpath refid="project.classpath"/> </javac> |
近期评论