`
egox
  • 浏览: 43810 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ant Project

    博客分类:
  • Ant
ant 
阅读更多

没有指定任何参数时,Ant会在当前目录下查询build.xml文件

 

可以指定执行一个或多个target。当省略target时,Ant使用标签<project>的default属性所指定的target

 

3 编写build.xml (ant 1.8.2)

 

3.1 Project

<project name="demo" default="all" basedir=".">

</project>

project有下面的属性:
(1) name --项目名称(Required:No)
(2) default --当没有指定target时使用的缺省target (Required:No)
(3) basedir --用于计算所有其他路径的基路径。该属性可以被basedir property覆盖。如果属性和basedir property都没有设定,就使用buildfile文件的父目录。 (Required:No)


3.2 Targets

<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
假定我们要执行target D。C依赖于B,B依赖于A,所以先执行A,然后B,然后C,最后D被执行。
一个target只能被执行一次,即时有多个target依赖于它。
<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>
module-A-present有值,执行target build-module-A,不执行target build-own-fake-module-A。
target有下面的属性:
(1) name --target的名字 (Required Yes)
(2) depends --用逗号分隔的target的名字列表,也就是依赖表。 (Required No)

(3) if --满足条件执行(true)。 (Required No)

(4) unless --不满足条件执行(false)。 (Required No)

(5) description --关于target功能的简短描述。 (Required No)

(6) extensionOf --把当前target加入到指定target的依赖中。(Required No) --ant 1.8.0

(7) onMissingExtensionPoint --如果(6)中指定的target不存在怎么办("fail","warn","ignore")。(Required No ,必须设置了extensionOf才能用,默认“fail”.) --ant 1.8.2

 

3.3 Tasks
一个task是一段可执行的代码。
可以给task赋一个id属性:
<taskname id="taskID" ... />
这里taskname是task的名字,而taskID是这个task的唯一标识符。通过这个标识符,你可以在脚本中引用相应的task。例如,在脚本中你可以这样:
<script ... >
task1.setFoo("bar");
</script>
设定某个task实例的foo属性。在另一个task中(用java编写),你可以利用下面的语句存取相应的实例。
project.getReference("task1").
注意:如果task1还没有运行,就不会被生效(例如:不设定属性),如果你在随后配置它,你所作的一切都会被覆盖。


3.4 Properties

(1) <property file="sample.properties"/>
在属性文件 sample.properties中: 
dir.build=builddir.src=srcjdom.home=../java-tools/jdom-b8jdom.jar=jdom.jarjdom.jar.withpath=${jdom.home}/build/${jdom.jar}

(2) <property name="builddir" value="build" />

${builddir} /classes可被解析为build/classes

 

内置属性
例如,${os.name}对应操作系统的名字。

 

java.version Java Runtime Environment version
java.vendor Java Runtime Environment vendor
java.vendor.url Java vendor URL
java.home Java installation directory
java.vm.specification.version Java Virtual Machine specification version
java.vm.specification.vendor Java Virtual Machine specification vendor
java.vm.specification.name Java Virtual Machine specification name
java.vm.version Java Virtual Machine implementation version
java.vm.vendor Java Virtual Machine implementation vendor
java.vm.name Java Virtual Machine implementation name
java.specification.version Java Runtime Environment specification version
java.specification.vendor Java Runtime Environment specification vendor
java.specification.name Java Runtime Environment specification name
java.class.version Java class format version number
java.class.path Java class path
java.library.path List of paths to search when loading libraries
java.io.tmpdir Default temp file path
java.compiler Name of JIT compiler to use
java.ext.dirs Path of extension directory or directories
os.name Operating system name
os.arch Operating system architecture
os.version Operating system version
file.separator File separator ("/" on UNIX)
path.separator Path separator (":" on UNIX)
line.separator Line separator ("\n" on UNIX)
user.name User's account name
user.home User's home directory
user.dir User's current working directory


baseddir --project基目录的绝对路径 (与<project>的basedir属性一样)

ant.file --buildFile的绝对路径

ant.version --Ant的版本

ant.project.name --当前执行的project的名字,由<project>的name属性设

ant.project.default-target --当前执行的project的default-target名字

ant.project.invoked-targets --a comma separated list of the targets that have been specified on                      the command line (the IDE, an <ant> task ...) when invoking the current project.

ant.java.version --Ant版本(“1.2”,“1.3”,“1.4”,“1.5”,“1.6”)

ant.core.lib --ant.jar文件的绝对路径

 

3.5 Path-like Structures
你可以用":"和";"作为分隔符,指定类似PATH和CLASSPATH的引用。Ant会把分隔符转换为当前系统所用的分隔符。

当需要指定类似路径的值时,可以使用嵌套元素。一般的形式是
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
location属性指定了相对于project基目录的一个文件和目录,而path属性接受逗号或分号分隔的一个位置列表。path属性一般用作预定义的路径--其他情况下,应该用多个location属性。

为简洁起见,classpath标签支持自己的path和location属性。所以:
<classpath>
<pathelement path="${classpath}"/>
</classpath>
可以被简写作:
<classpath path="${classpath}"/>
也可通过<fileset>元素指定路径。构成一个fileset的多个文件加入path-like structure的顺序是未定的。
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</classpath>
上面的例子构造了一个路径值包括:${classpath}的路径,跟着lib目录下的所有jar文件,接着是classes目录。

如果你想在多个task中使用相同的path-like structure,你可以用<path>元素定义他们(与target同级),然后通过id属性引用。

path-like structure可能包括对另一个path-like structurede的引用(通过嵌套<path>元素):
<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
前面所提的关于<classpath>的简洁写法对于<path>也是有效的,如:
<path id="base.path">
<pathelement path="${classpath}"/>
</path>
可写成:
<path id="base.path" path="${classpath}"/>

 

命令行变量
有些task可接受参数,并将其传递给另一个进程。为了能在变量中包含空格字符,可使用嵌套的arg元素。

value --一个命令行参数;可包含空格字符。
line --空格分隔的命令行参数列表。 
file --作为命令行变量的文件名;会被文件的绝对名替代。 
path --...

pathref --...

prefix --...

suffix --...

例子
<arg value="-l -a"/>
是一个含有空格的单个的命令行变量,不分“-l”和"-a"
<arg line="-l -a"/>,“-l”和"-a"
是两个空格分隔的命令行变量。
<arg path="/dir;/dir2:\dir3"/>
是一个命令行变量,其值在DOS系统上为\dir;\dir2;\dir3;在Unix系统上为/dir:/dir2:/dir3 。

References
buildFile元素的id属性可用来引用这些元素。如果你需要一遍遍的复制相同的XML代码块,这一属性就很有用--如多次使用<classpath>结构。

下面的例子:
<project ... >
<target ... > 
<rmic ...> 
<classpath> 
<pathelement location="lib/"/> 
<pathelement path="${java.class.path}/"/> 
<pathelement path="${additional.path}"/> 
</classpath> 
</rmic> 
</target>
<target ... >
<javac ...>
<classpath>
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</classpath>
</javac>
</target>
</project>
可以写成如下形式:
<project ... > 
<path id="project.class.path"> 
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/> 
<pathelement path="${additional.path}"/> 
</path>
<target ... >
<rmic ...>
<classpath refid="project.class.path"/>
</rmic>
</target>
<target ... > 
<javac ...>
<classpath refid="project.class.path"/>
</javac>
</target>
</project>
所有使用PatternSets, FileSets 或 path-like structures嵌套元素的task也接受这种类型的引用。

 

分享到:
评论

相关推荐

    Python ANT project-开源

    【Python ANT Project 开源介绍】 Python ANT Project 是一个开源项目,专为那些对Java平台上的Apache ANT工具感兴趣,同时又热衷于Python编程语言的开发者设计。ANT是Java社区广泛使用的自动化构建工具,而PyANT则...

    ant 打包 java project 为ant

    标题中的“ant打包java project为jar”指的是使用Apache Ant工具将Java项目打包成JAR(Java Archive)文件的过程。Ant是Java开发中的一个构建工具,它以XML格式定义任务,可以自动化编译、测试、打包等流程。在这个...

    Java编写的Ant,实现了上传下载功能

    JavaAnts是一个基于Java编程语言实现的工具,利用Apache Ant技术构建,专注于文件的上传和下载功能。Apache Ant是一个开源的构建工具,它被广泛应用于Java项目中,以替代传统的Makefile,提供更加灵活和跨平台的项目...

    Java调用Ant API用法收集

    import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Mkdir; public class DirectoryCreator { public static void main(String[] args) { // 创建一个Ant Project实例 Project prj = ...

    Eclipse里配置Ant 组织的Project(3) -- E中配置Tomcat的JNDI

    在Eclipse中配置Ant组织的Project是开发Java Web应用程序时常用的一种方法,它可以帮助开发者更加高效地管理和构建项目。本文将详细讲解如何在Eclipse中配置Ant,以及如何结合Tomcat服务器来设置JNDI(Java Naming ...

    Ant的最完整的build.xml解释

    &lt;project default="run" basedir="." name="MyProject" description="Sample Ant project"&gt; ``` 2. **`&lt;target&gt;` 标签** - **作用**:定义构建过程中的一个步骤或目标。 - **属性**: - `name`:目标名称。 ...

    apache-ant-1.9.2-bin.tar.bz2

    apache ant project build tool

    Generic ANT Project (GAP)-开源

    **通用ANT项目(GAP)概述** 通用ANT项目(GAP)是一个开源工具,它基于Apache ANT,一个广泛使用的Java构建工具。ANT以其灵活性和可扩展性著称,但对初学者来说,配置可能较为复杂。GAP的目标是简化这个过程,通过...

    Android代码-安卓豌豆荚平台ANE

    wandoujiaANE 安卓豌豆荚平台ANE 编写ANE过程 form wanglailai: Adobe Air Native Extension.../build/ (ant project to build ane file.) /ANETestApp/ (ActionScript Mobile Project)-Demo used ane4wdj If any doub

    java ant-project

    Java Ant-Project是一个基于Java的构建工具,它主要用于自动化软件项目的构建、编译、测试和部署过程。Ant这个名字来源于“蚂蚁”,寓意它像蚂蚁一样能够处理各种繁重的任务。这个项目是Apache软件基金会的一部分,...

    ant.jar下载

    org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip.ZipLong org.apache.tools.ant.Executor org.apache.tools.ant.Location org.apache.tools.tar.TarEntry org.apache.tools....

    ANT文件详解 ant介绍 ANT 命令

    Ant的构建过程主要围绕“Project”、“Target”和“Task”三个核心概念展开: - **Project**:代表整个构建项目,是构建文件的最外层容器,其中包含了一系列的Target。 - **Target**:是Project内的独立构建单元,...

    apache-ant-1.9.16-bin.zip

    Apache Ant 是一个开源的构建工具,广泛用于Java项目管理,它是Apache软件基金会的产品之一。Ant以其XML为基础的构建文件(build.xml)而著名,这种文件定义了构建过程中的任务序列,使得开发人员能够自动化编译、...

    ant创建web project!

    本文将深入探讨“ant创建web project!”这一主题,基于提供的标签“源码”和“工具”,我们将围绕Apache Ant这款强大的Java构建工具,以及如何利用它来创建Web应用程序项目进行详细阐述。 Apache Ant是一款开源的...

    利用ant.jar解压缩zip包

    import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Expand; ``` 然后,我们可以定义一个方法,接受ZIP文件的路径和解压缩的目标目录作为参数: ```java public class ZipExtractor { ...

    对于ANT的概述

    ### 对于ANT的概述 #### ANT的基本概念及用途 ANT是一种开源的、强大的构建工具,主要用于Java项目的构建过程,如编译、测试、打包、部署等。与传统的手动构建方式相比,ANT通过定义一系列的任务(tasks)来自动...

    spring源码

    对于Ant项目,选择"File &gt; Import &gt; Existing Ant Project",然后指向Ant的构建文件;对于Maven项目,可以选择"File &gt; Import &gt; Maven &gt; Existing Maven Projects"。导入后,Eclipse会自动识别并构建项目,使得我们...

    org.apache.tools.*需要的ant.jar包

    project.setUserProperty("ant.file", "path/to/build.xml"); BuildEvent buildEvent = new BuildEvent(project); project.fireBuildStarted(buildEvent); try { project.executeTarget("default"); // 执行...

Global site tag (gtag.js) - Google Analytics