`
liyixing1
  • 浏览: 958975 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

target目标与任务

Ant 
阅读更多
运行ant没有带参数的情况下,会读取project元素,并使用default属性来作为目标执行。

ant所有任务都支持的三个属性:
id,一个任务实例的唯一标识。与Reference类型一同使用。
taskname,任务实例名,将显示在日志中。
description,任务的注释。

<project>和<target>元素都不是任务。

project元素
属性
basedir基目录,工程中的所有相对路径都是基于该值。默认是构件文件所在目录。如果此属性未指定,则可以在调用 ant的时候加上特性 ant -Dbasedir=目录 target(要调用的目标名)

default必须,指定一个目标,如果ant命令未带上目标,则默认执行这个目标。

name项目的名字。用于建立文档。在ant -projecthelp时也会显示这个名字。

它可以嵌套子元素:
0-N个description为工程建立一个描述。在ant -projecthelp的时候会显示这个描述。
0-N个filelist元素 定义工程范围的filelist
0-N个fileset元素 定义工程范围的fileset
0-N个filterset元素 定义工程范围的filterset
0-N个mapper元素
0-N个path元素
0-N个property元素
1-N个target元素
0-N个taskdef元素


target元素
属性
depends此目标的依赖目标,用逗号分割。列出的目标会在此目标前执行。
description目标的描述。
if指定一个特性名,只有在设置了特性才会执行。
name必须,目标的名字
unless指定一个特性名,未设置特性,才执行。

目标可以包含DataType和任务。

ant任务
ant任务会基于另一个构件文件的一个目标调用ant。可以为工程定义多个构件文件。不同的ant版本,工程间调用时,特性的传递方式也不同。1.1版本,新工程可以见到调用工程的特性。如果两个工程都定义同一个特性,那么调用工程的特性优先。

属性:
antfile要调用的构件文件名字,默认是build.xml
dir新工程的基目录。antfile属性会相对这个目录来寻找。默认是当前目录。
inheritall控制特性如何由当前工程传递到新工程。默认是true。表示当前工程的特性在新工程可用。false,当前工程定义的特性不会传递到新工程,除非他们在ant命令行定义(这时候是用户特性,而不是构件特性了)。
output文件名,输出会写至这个文件。
target新工程要调用的文件名。如果忽略,会调用新工程的默认目标
可以嵌套
0-N个property元素,将一个特性传递到新工程
<ant antfile="email/build.xml">
  <property name="test" value="test_value" />
</ant>

antcall任务
调用当前构件文件的一个目标
通过使用嵌套<param>元素将特性传递到新目标。antcall会使用当前构件文件,并新建一个实例,然后才调用这个目标。
属性:
inheritall和ant类似
target必须,要调用的目标

嵌套0-N个param元素
将一个特性传递给新的构件过程。param元素和property类似。属性也相同。

antstructure任务
为ant创建一个xml dtd。它使用java反射为所有任务确定可允许的属性和内容。因为ant任务并未指出所需要的属性,所以生成的DTD属性是#IMPLIED(表示可选)
属性
output必须,生成的DTD文件的文件名

apply任务
执行一个系统命令。execon任务已经被废除。与exec任务不同,此任务需要嵌套fileset来指定一个或多个文件和目录作为命令的参数
属性
dest由命令所生成的任何目标文件的目标目录。
dir命令的工作目录
executable必须,要执行的命令名,不包括命令参数
failonerror如果为true,若命令返回非0值,则构件失败。默认是false
newenvironment,如果是true,则不将现有环境变量传递至新过程。默认是false
os此任务可应用的操作系统列表,它会System.getProperty("os.name")来获取系统,并与之比较。在列表中了才会执行
output一个文件,命令输出既要重定向到这个文件
outputproperty存储命令输出的特性的名字
parallel如果为true,则命令仅执行一次,将所有文件传递为参数。如果为false,此命令为各个文件分别执行依次。默认是false。
skipemptyfilesets如果为true,当未找到源文件,或者源文件比目标文件新,则不执行命令。默认是false。
timeout终止命令之前所等待的豪秒数,如果未指定,无限期等待。
type确定无格式文件或目标的名字是否发送至命令。可允许的值可以是file,dir或both。默认是file
vmlauncher指定是否试图使用jvm的内置命令启动程序,而不是一个antRUN脚本,默认是true。
如果指定了一个嵌套的<mapper>元素,dest就必须。

可以嵌套子元素
0-N个arg元素,命令行参数
0-N个env元素,指定环境变量
0-N个fileset元素,指定哪些文件和目录要作为参数传递至命令。除非指定了srcfile元素,否则文件将追加到命令行末尾。
0-N个mapper元素,如果定义,则将目标文件的时间戳和源文件时间戳比较。
0-N个srcfile元素,如果存在,则对由fileset元素指定的文件要置于命令行何处加以控制。srcfile没有任何属性。需要置于合适的arg元素之间。
0-N个targetfile元素,此元素仅在apply元素设置了一个mapper元素和destdir属性才可用。没有任何属性。用于标记命令行上目标文件的位置。和srcfile元素相同。
<?xml version="1.0" encoding="utf-8"?>
<project name="DataType 测试" default="run" basedir=".">
<filelist id="needFiles" dir="." files="1.txt, 2.txt, 3.txt" />
<filelist id="moreFiles" dir="." files="4.txt" />
<target name="run">
<tstamp>
<format property="starttime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="开始时间:${starttime}" />

<apply executable="dir" vmlauncher="false">
<fileset dir=".">
<include name="build.xml" />
</fileset>
</apply>

<tstamp>
<format property="endtime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="结束时间:${endtime}" />
</target>
</project>
结果
D:\source\liyixing\ant>ant
Buildfile: D:\source\liyixing\ant\build.xml

run:
     [echo] 开始时间:2011-05-16 11:27:00
    [apply]  驱动器 D 中的卷是 IT
    [apply]  卷的序列号是 D0EA-6307
    [apply]
    [apply]  D:\source\liyixing\ant 的目录
    [apply]
    [apply] 2011-05-16  11:26             2,205 build.xml
    [apply]                1 个文件          2,205 字节
    [apply]                0 个目录 92,811,255,808 可用字节
     [echo] 结束时间:2011-05-16 11:27:01

BUILD SUCCESSFUL
Total time: 0 seconds

加上output属性,output="a.txt"结果
D:\source\liyixing\ant>ant
Buildfile: D:\source\liyixing\ant\build.xml

run:
     [echo] 开始时间:2011-05-16 11:30:36
     [echo] 结束时间:2011-05-16 11:30:36

BUILD SUCCESSFUL
Total time: 0 seconds

dir命令的结果打印在了a.txt。打开a.txt可以看到结果。

available
available如果某资源可用,则有条件的设置一个特性。资源可以是一个类,文件,目录或者java系统资源。如果资源存在,此特性设置为true,或者设置为value属性设置的值。否则不设置特性。
部分任务不列出。

fail抛出一个异常(BuildException)并终止当前构建。message指定执行此任务时显示的消息。
属性
message要显示的消息。

jar
创建一个jar文件
属性
basedir 要增加到jar文件中的文件的基目录
compress 如果为true,则解压jar文件。默认是true
defaultexcludes 是否使用默认排除模式。默认是true
encoding 指定jar文件的文件名编码默认是utf-8.
excludes要排除的文件模式列表。逗号分隔
excludesfile 每行一个要排除的列表
includes 要包含的文件模式列表,逗号分隔
includesfile 每行包括一个要包含的文件模式。
jarfile 要创建的jar文件的文件名
manifest 清单文件的文件名。如果没有指定的话,ant会生成一个新的清单,里面会添加ant的版本号。
update如果为true,则发生修改时更新现有jar文件。而不是重新生成。
whenempty未找到输入文件的错做。默认是create。合法值是 fail 终止构建。 skip不创建jar文件 create创建一个空的jar文件。
可以嵌套
0-N个attribute元素。每个元素都是一个键值对。对于清单文件中未命名的段中。清单中各段使用空行分隔。使用section创建清单段。
属性:
name属性名
value属性值
0-N个patternset元素(exclude,incude,patternset,excludesfile,includesfile)代替其属性。

0-N个fileset元素,指定包括在jar文件中的文件和目录。
0-N个metainf元素,定义一个fileset,其中包含要放到jar的META-INF目录下面的文件。如果set中有MANIFEST.MF文件,那么会把这个文件和jar中的MANIFEST.MF合并。
0-N个section元素,每个元素定义一个清单段。每个section可以包含attribute。
属性:
name,段明。
0-N个zipfileset。

<?xml version="1.0" encoding="utf-8"?>
<project name="DataType 测试" default="run" basedir=".">
<filelist id="needFiles" dir="." files="1.txt, 2.txt, 3.txt" />
<filelist id="moreFiles" dir="." files="4.txt" />
<target name="run">
<tstamp>
<format property="starttime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="开始时间:${starttime}" />

<jar jarfile="build/test.jar" basedir="src" includes="**/*.java">
<manifest>
<attribute name="Version" value="3.2" />

<section name="test1">
<attribute name="test1-1" value="test1-1" />
</section>

<section name="test2">
<attribute name="os" value="windows" />
</section>
</manifest>
</jar>

<tstamp>
<format property="endtime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="结束时间:${endtime}" />
</target>
</project>
生成的jar的清单文件内容
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_22-b04 (Sun Microsystems Inc.)
Version: 3.2

Name: test1
test1-1: test1-1

Name: test2
os: windows


java
指定一个java类
使用ant的vm或者创建一个新的vm来执行java类。
如果代码中有System.exit(),要确保fork=true,否则ant也会退出。
属性
args,弃用,使用args元素
classname,执行的java类
classpath要使用的类路径。除非fork=true,否则会添加到ant的类路径。
classpathref 应用构建文件定义的类路径。
dir vm的工作目录。fork=true的时候,它才有效。
failonerror,如果未true,则当命令返回0值时构建失败。默认是false,fork=true的时候,它才有效。
fork 为true的时候,创建一个新的VM实例。默认false。
jar要执行的一个可执行jar文件的文件名。此jar文件必须包括一个Main-Class的清单项。而且fork必须是true。
jvm java解释器的命令名。默认是java。fork必须是true。
jvmargs,弃用使用jvmarg元素。
maxmemory 为新创建的vm分配最大内存量。fork=true才有用。
output 一个文件名,输出写到这里
classname或jar二者必选其中一个。
嵌套
0-N个arg或者jvmarg元素
指定应用的参数和虚拟机的参数。
0-N个sysproperty指定系统特性
0-N个classpath用path元素来代替classpath或者classpathref属性。
<?xml version="1.0" encoding="utf-8"?>
<project name="DataType 测试" default="run" basedir=".">
<filelist id="needFiles" dir="." files="1.txt, 2.txt, 3.txt" />
<filelist id="moreFiles" dir="." files="4.txt" />
<target name="run">
<tstamp>
<format property="starttime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="开始时间:${starttime}" />

<java classname="test.Test">
<arg value="123" />
<classpath>
<pathelement path="build" />
</classpath>
</java>

<tstamp>
<format property="endtime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="结束时间:${endtime}" />
</target>
</project>

<?xml version="1.0" encoding="utf-8"?>
<project name="DataType 测试" default="run" basedir=".">
<filelist id="needFiles" dir="." files="1.txt, 2.txt, 3.txt" />
<filelist id="moreFiles" dir="." files="4.txt" />

<path id="test.classpath">
<pathelement path="build/test.jar" />
<pathelement path="build/1.jar" />
</path>

<target name="run">
<tstamp>
<format property="starttime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="开始时间:${starttime}" />

<java classname="test.Test">
<arg value="123" />
<classpath refid="test.classpath" />
</java>

<tstamp>
<format property="endtime" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<echo message="结束时间:${endtime}" />
</target>
</project>
应用其他地方定义的path

javac任务
编译,将java文件和class文件比较。如果不存在文件或者源文件比其相应的类文件更新,才会进行编译。依赖关系,ant无法发现。如父类A修改了,而子类B继承父类A,B未修改,ant只重新编译A,而不会重新编译B。会出现特殊问题。
支持多种编译器。
JDK1.1-12编译器是classic
JDK1.3/1.4是modern。
IBM Jikes编译器 jikes
Microsoft的javaSDK编译器 jvc
kopi编译器kjc
gcc的gcj编译器 gcj
Symantec编译器 sj
在其自己的JVM中运行modern或classic extJavac
属性
bootclasspath 要启动的bootstrap类路径。
bootclasspathref应用某处定义的类路径。
classpath要使用的类路径。如果fork不是true的情况下,会把它添加到ant的类路径。
classpathref 应用某处的类路径。
debug 如果是true,编译源代码会有调试信息。默认false
defaultexcludes 是否使用默认排除模式。默认true
depend 如果是true,则对于支持依赖检查的编译器(jikes和classic)启动依赖检查。默认是false。
deprecation,如果是true,显示废弃警告。默认false
destdir类文件的目标目录
encoding源文件的字符编码
excludes
excludesfile
extdirs覆盖java安装可选包的一般位置
failonerror如果true,当出现错误,构建失败。默认是true
fork 如果true,java编译器作为一个新的进程。如果设置,此属性将覆盖build.compiler特性。而ant执行JAVA_HOME/bin中实际的java可执行程序。而不是编译器的Main类。默认false
includeantruntime,如果true,则将ant运行时库包含到类路径。默认true
includejavaruntime,如果是true,则包括来自正在执行的VM的默认运行库。默认是false。
includes
includesfile
memoryinitialsize 当fork=true时工作。为vm指定内存大小。
memorymaximumsize 当fork=true时工作。为vm指定最大内存
nowarn如果是true,把-nowarn参数传递到编译器。默认false
optimize如果true,指示编译器优化代码。默认false。
source如果指定,此属性的文件将作为-source命令行参数传递给javac。
srcdir源代码的位置
target指定一个vm的版本
verbose如果未true,则编译器生成显示输出。默认是false。
除非指定了src元素,否则srcdir的属性是必须的。

可以嵌套0-N个exclude,include,patternset,excludesfile,includesfile
0-N个bootclasspath,classpath,extdirs,src
分享到:
评论

相关推荐

    Ant常见属性解析--target

    在Ant构建工具中,"target"是一个至关重要的概念,它是Ant构建脚本的基本构建块,定义了一组任务或目标的执行顺序。Ant是Java项目自动化构建的首选工具,它的灵活性和可扩展性使得开发者能够定制自己的构建过程。...

    multi_target.zip_multi-target_tracking_关联 数据_目标跟踪 matlab_跟踪数据关联

    总之,"multi_target.zip"压缩包提供了一个多目标跟踪与数据关联的MATLAB实例,可以帮助我们深入理解这些复杂概念,并动手实践相关算法。通过学习和运行这个程序,我们可以进一步掌握如何在实际场景中有效地进行多...

    [北京圣思园Ant深入详解]_003.Ant目标深度详解、使用Ant的各种任务

    本篇将深入探讨Ant的目标(Target)和任务(Task),这是Ant构建过程中的两个核心概念。 首先,我们来理解Ant的目标(Target)。在Ant中,目标是一个可执行的任务集合,它是构建过程中的一个步骤或阶段。目标之间...

    基于simulink与xpctarget的嵌入式系统开发随笔

    ### 基于Simulink与XPC Target的嵌入式系统开发 #### 一、引言 在当今数字化时代,嵌入式系统的应用日益广泛,涵盖了从工业自动化到消费电子产品的众多领域。Simulink作为MATLAB的一个重要组件,为用户提供了图形...

    UCOSIII使用中的任务监控uC/Probe的目标代码

    uC/Probe的目标代码是与UCOSIII操作系统配套的,它可以嵌入到你的项目中,无需额外的硬件调试设备。当你编译项目时,会将这些目标代码集成进去,使得在运行时能够收集到UCOSIII的内部信息。这些信息包括但不限于任务...

    SFND_Radar_Target_Detection-master_雷达目标检测脉冲压缩SFND_

    雷达目标检测是雷达系统中的核心任务,其目的是在复杂的电磁环境中识别出感兴趣的物体或目标。这个过程涉及信号的发射、反射和接收,然后通过一系列的处理步骤来分析和识别回波信号。首先,雷达会发送出脉冲信号,该...

    Target_Detection_realvqr_遍历目标识别(模板匹配)_targetdetection_

    在计算机视觉领域,"Target Detection"(目标检测)是一项核心任务,它涉及到识别并定位图像中的特定对象。在这个场景中,我们关注的是"遍历目标识别(模板匹配)",这是一种简单但有效的技术,用于在大图像(...

    JPDAF.rar_JPDAF_JPDAF.rar_jpda multi target_jpda tracking_多目标 跟踪

    标题"JPDAF.rar_JPDAF_JPDAF.rar_jpda multi target_jpda tracking_多目标 跟踪"表明这是一个与JPDAF(Joint Probabilistic Data Association Filter,联合概率数据关联滤波器)相关的压缩文件,涉及到多目标跟踪...

    target support package 4

    ### 目标支持包(Target Support Package)4:嵌入式系统开发利器 #### 概述 目标支持包(Target Support Package,简称TSP),是针对特定硬件平台部署由MATLAB、Simulink及Stateflow生成代码的重要工具。它不仅...

    target——action模式

    这种模式的核心思想是将一个动作(Action)与一个执行该动作的对象(Target)分离,使得在程序中可以动态地绑定动作和处理动作的目标对象。 在Objective-C中,Target-Action模式被广泛用于用户界面(UI)组件,如...

    iscsi_target_tq.rar_The Target

    **iSCSI目标(Target)** 在iSCSI架构中,"目标"是提供存储资源的一方,通常是存储服务器或存储区域网络(SAN)。iSCSI目标对外暴露了多个逻辑单元号(LUNs),每个LUN可以代表一个硬盘、卷或虚拟磁盘。客户端,也...

    Radar_Target_Detection.zip

    在雷达信号处理领域,"Radar_Target_Detection.zip" 文件包显然聚焦于雷达目标检测的关键技术。这个包可能包含了使用MATLAB编写的程序,用于分析和处理雷达回波数据。MATLAB是一种强大的数学计算和数据分析工具,常...

    STM32mat-target-5.6.0安装包

    2. **堆栈跟踪**:工具能够追踪每个任务的堆栈使用,帮助识别可能的堆栈溢出问题,从而提高系统的稳定性和可靠性。 3. **内存泄漏检测**:STM32MAT能够检测到未正确释放的内存块,这对于长期运行的应用至关重要,...

    基于目标相关单元的家用服务机器人多模态语言理解模型_Target-dependent UNITER A Transformer-

    Target-dependent UNITER是基于UNITER[1]的Transformer架构扩展而来,它可以直接学习目标对象与其他对象之间的关系,而不仅仅是关注整个图像。这种方法改进了对指代表达(referring expressions)的建模,这些表达...

    Radar-target-generation-and-detection-master_radarcfar_雷达FFT_雷达m

    目标检测是雷达系统的主要任务之一,其目的是在噪声和干扰中识别出真正的目标信号。MATLAB中的目标检测算法可能包括匹配滤波器、维纳滤波、卡尔曼滤波等,这些算法可以结合CFAR检测策略,提高目标检测的性能和可靠...

    GDOP_target_direction.rar_GDOP双_基地 定位_基线 matlab_声纳_目标方位

    本项目探讨了GDOP(几何 dilution of precision,精度几何因子)与双基地声纳定位中目标方位的关系,这关系到测量的精度。GDOP是衡量传感器配置对定位精度影响的一个关键指标,它量化了坐标系统的几何形状如何影响...

    基于python实现武器目标分配问题-动态规划算法

    5. **求解最优解**:通过回溯填充的表格,找到最优的武器与目标分配。 在Python中,我们可以使用二维列表或其他数据结构来实现这个表格,并利用循环结构进行填充。例如,可以使用两个嵌套的for循环遍历所有可能的...

    target_雷达matlab_SARpointtarget_matlab雷达回波_SAR点目标分析_雷达_

    这种方法是将回波信号与预期的点目标响应进行卷积,以增强目标信号并抑制噪声。 6. **BPA.m和target.m**:这两个MATLAB脚本可能是实现上述分析过程的代码。`BPA.m`可能代表“Back Projection Algorithm”,这是一种...

    A table target detection annotation tools; 表格目标检测标注工具.zip

    目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,...

Global site tag (gtag.js) - Google Analytics