ANT笔记

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:\jdk160

rem —–将Apache Ant的bin路径添加到PATH环境变量中
set PATH=%PATH%;%ANT_HOME%\bin

ant

主要是设置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>

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">