您的位置:首页 > 其它

用ant构建项目

2009-04-01 14:01 127 查看

出处:http://snowyvalley.javaeye.com/blog/62882

《eclipse in action》第五章 用ant构建项目

关键字: eclipse

主要内容:

1 java的构建工具ant

2 ant 的projects,targets,tasks,properties

3 简单的ant 构建文件

5.3.1
xml和html
xml:extensible markup language 可扩展标记语言
1) html表现的是如何在网页上显示数据,他定义了一套标准的标签。
2) Html的标签有开始标签,可以没有结束标签如:《p》….《/p》也可以《p》而xml则必须匹配开始和结束标签
3) Xml的标签的嵌套必须正确而html则不必如:《b》《i》this is not valid in xml《/b》《/i》
4) Xml的标签是大小写敏感的,html则不是

元素:一个开始标签和一个结束标签定义了一个元素。
属性:开始标签中的名-值对是属性
xml中的注释:《! - - do something here - - 》
空元素的写法:《java classname=”Hello.class”》《/java》或《java classname=”Hello.class” /》
5.3.2 ant 的默认构建描述文件是build.xml
在eclipse中运行ant脚本:在build.xml上右键选择run ant 可在控制台中显示结果
ant已集成到eclipse中,如果要得到新版本的ant,则其下载地址是:http://ant.apache.org
A 《project》
属性 描述 是否必须
default 要运行的默认目标 Y
name 项目名 N
basedir 基目录 N
description 项目描述 N
属性

《project name=”Hello” default=”compile” basedir=”.” Description=”Hello,World build file”》
‘.’代表的是build.xml所在的目录
可以嵌套的标签《description》《target》《property》

B Targets
属性 描述 是否必须
name 目标名 Y
depends 依赖列表 N
if 指定属性被设置时执行 N
unless 当指定属性未被设置时执行 N
description 目标描述 N

《target name=”compile” depends=”init” description =”Compile all sources”》

C Tasks

《buildnumber》从文件中读取构建的计数器每构建一次计数器加一写回文件

属性 描述 是否必须
file 读取的属性默认build.number N

《buildnumber file=”buildnum.txt” /》

copy任务属性
属性 描述 是否必须
file 源文件名 Y,除非使用fileset
tofile 目标文件名 Y,除非使用 todir
todir 目标目录 Y,如果多于1个文件
overwrite 覆盖较新的目标文件 N,默认false
includeEmptyDirs 拷贝空目录 N,默认true
failonerror 文件未发现停止构建 N,默认true
verbose 列出拷贝文件 N,默认false

《copy file=”log4j.properties” todir=”bin” /》
《copy》拷贝一个文件file 属性 拷贝一组文件 《fileset》 元素嵌套

delete任务属性
属性 描述 是否必须
file 要删除的文件 Y,除非是dir或fileset
dir 要删除的目录 Y,除非file fileset
verbose 删除文件列表 N,默认false
failonerror 有错误停在 N,默认true
includeEmptyDirs 删除的目录当fileset指定 N,默认false

《delete file=”ant.log” /》
《delete dir=”temp” /》
《delete》 删除一个文件使用file属性,一组文件用《fileset》元素嵌套或目录用 directory属性

echo任务属性:
《echo》向终端,文件写信息
属性 描述 是否必须
message 信息 Y,除非文本做为元素内容
file 输出文件 N
append 是否追加到文件 N,默认false
《echo messag=”Hello” /》
《echo》this is a Message form ant 《/echo》

jar任务属性:
《jar》将一组文件压缩为一个jar文件
属性 描述 是否必须
destfile Jar文件名 Y
basedir 要打包的目录 N
includes 包含的文件 N
excludes 排除的文件 N

《jar destfile=”dist/persistence.jar” basedir=”bin” includes=”org/ecli/persis/**,org/ecli/astr/**” excludes=”*Text*.class” /》
《jar destfile="dist/persistence.jar"》
《include name="**/*.class"/》
《exclude name="**/*Test*"/》
《/jar》
java任务属性:
《java》 可以嵌套的元素《classpath》用来替代classpath属性
属性 描述 是否必须
classname 要运行的类名 Y,除非指定jar
jar 执行的jar Y,除非指定clsssname
classpath 使用的类路径 N
fork 是否使用较新的JVM N,默认false
failonerror 错误发生是否停止 N,默认false
output 输出文件 N
append 追加或覆盖默认文件 N
《java classname="HelloWorld"/》
《java classname="Add" classpath="${basedir}/bin"》
《arg value="100"/》
《arg value="200"/》
《/java》
《arg》 指定命令行参数

javac任务属性:
《javac》 编译java文件 可以嵌套的元素《classpath》《jar》
属性 描述 是否必须
srcdir 源目录 Y,除非src使用
destdir 输出目录 N
includes 包含的编译文件 N,默认包含所有java文件
excludes 忽略的文件 N
classpath 使用的类路径 N
debug 是否包含调试信息 N,默认false
optimize 使用优化 N,默认false
verbose 提供verbose输出 N
failonerror 错误发生是否停止 N,默认true

《javac srcdir="src" destdir="bin"/》
《javac srcdir="${basedir}" destdir="bin"
includes="org/eclipseguide/persistence/**"
excludes="**/*Test*"》
《classpath》
《pathelement path="${java.class.path}"/》
《pathelement location=
"D:/log4j/jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar"/》
《/classpath》
《/javac》
javadoc任务属性:
《javadoc》从java的源文件中产生javadoc文档,可嵌套的元素为《fileset》《packageset》《classpath》
属性 描述 是否必须
sourcepath 源路径 Y,除非指定sorcefiles,sorcepathref
sourcepathref 源路径参照 Y, 除非指定sorcepath,sorcefiles
sourcefiles 源文件,逗号分隔 Y, 除非指定sorcepath,sorcepathref
destdir 目标目录 Y, 除非指定doclet
classpath 类路径 N
public 仅显示公共类,成员 N
protected 仅显示保护的,公共类,成员 N,默认true
package 仅显示包,保护的,公共类,成员 N
private 显示所有类,成员 N
version 包含版本信息 N
use 包含use信息 N
author 包含作者信息 N
failonerror 错误发生是否停止 N,默认true

《javadoc destdir="doctest"
sourcefiles=
"src/org/eclipseguide/persistence/ObjectManager.java"/》
《javadoc destdir="doc"
author="true"
version="true"
use="true"
package="true"》
《fileset dir="${src}/org/eclipseguide/astronomy/"》
《include name="**/*.java"/》
《exclude name="**/*Test*"/》
《/fileset》
《classpath》
《pathelement path="${java.class.path}"/》
《pathelement location=
"D:/log4j/jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar"/》
《/classpath》
《/javadoc》

《mkdir》创建目录
属性 描述 是否必须
dir 要建立的目录 Y
《mkdir dir="dist/doc"/》
《tstamp》时间戳
DSTAMP yyyyMMdd
TSTAMP hhmm
TODAY MMM dd yyyy
C 属性
可以把属性写在一个文件中,用《property file=”build.properties”》指定并读取
# build.properties
junit_home=D:/junit/junit3.8.1
log4j_home=D:/log4j/jakarta-log4j-1.2.8
可以这样使用:
《property file="build.properties"/》

D fileset
《fileset》中的通配符
‘?’ 任何一个字符
‘*’0个或多个字符
‘**’0个或多个目录
属性 描述 是否必须
dir 目录 Y
includes 包含文件 N
excludes 排除文件 N
《fileset dir="src/org/eclipseguide/astronomy"
includes="**/*.java"
excludes="**/*Test*"/》
《fileset dir="src/org/eclipseguide/astronomy/"》
《include name="**/*.java"/》
《exclude name="**/*Test*"/》
《/fileset》

E classpath
属性 描述 是否必须
path 路径 N
location 独立文件或目录 N
《classpath path="bin"/》
《classpath》
《pathelement path="${java.class.path}"/》
《pathelement location="${junit_path}"/》
《pathelement location="${log4j_path}"/》
《/classpath》
F refid
ant的元素都可以设置一个ID,你可以通过这个ID来引用这个元素
设置classpath
《classpath id="common_path"》
《pathelement path="${java.class.path}"/》
《pathelement location="${junit_path}"/》
《pathelement location="${log4j_path}"/》
《/classpath》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: