当前位置:网站首页>Ant高级-task
Ant高级-task
2022-07-27 09:55:00 【51CTO】
一 Task的命令行参数
有些task可接受参数,并将其传递给另一个进程。为了能在变量中包含空格字符,可使用嵌套的arg元素。
Attribute Description Required
value 一个命令行变量;可包含空格字符。只能用一个
line 空格分隔的命令行变量列表。
file 作为命令行变量的文件名;会被文件的绝对名替代。
path 一个作为单个命令行变量的path-like的字符串;或作为分隔符,Ant会将其转变为特定平台的分隔符。
例子
<arg value="-l -a"/> 是一个含有空格的单个的命令行变量。
<arg line="-l -a"/> 是两个空格分隔的命令行变量。
<arg path="/dir;/dir2:\dir3"/> 是一个命令行变量,其值在DOS系统上为\dir;\dir2;\dir3;在Unix系统上为/dir:/dir2:/dir3 。
二 时间戳<tstamp/>
在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件,以便插入一个字符串来指定日期和时间,或将这个信息合并到 JAR 或 zip 文件的文件名中。
这种需要是通过简单但是非常有用的 tstamp 任务来解决的。这个任务通常在某次生成过程开始时调用,比如在一个 init 目标中。这个任务不需要属性,许多情况下只需 <tstamp/> 就足够了。
tstamp 不产生任何输出;相反,它根据当前系统时间和日期设置 Ant 属性。下面是 tstamp 设置的一些属性、对每个属性的说明,以及这些属性可被设置到的值的例子:
属性说明例子
DSTAMP 设置为当前日期,默认格式为yyyymmdd 20031217
TSTAMP 设置为当前时间,默认格式为 hhmm 1603
TODAY 设置为当前日期,带完整的月份2003 年 12 月 17 日
例如,在前一小节中,我们按如下方式创建了一个 JAR 文件:
<jar destfile="package.jar" basedir="classes"/>
在调用 tstamp 任务之后,我们能够根据日期命名该 JAR 文件,如下所示:
<jar destfile="package-{DSTAMP}.jar" basedir="classes"/>
因此,如果这个任务在 2003 年 12 月 17 日调用,该 JAR 文件将被命名为 package-20031217.jar。
还可以配置 tstamp 任务来设置不同的属性,应用一个当前时间之前或之后的时间偏移,或以不同的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示:
上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。
用于定义格式字符串的字符与 java.text.SimpleDateFormat 类所定义的那些格式字符相同 。
三 发送email的task
使用SMTP服务器发送邮件
例子:
四 ssh和scp
在ant中,使用ssh命令远程启动和停止另外一台机器上的tomcat
下面是远程停止192.168.0.2这台机器上的tomcat:
下面是远程启动192.168.0.2这台机器上的tomcat:
在ant中,使用scp将本地的文件(appwar目录下的文件)远程拷贝到另外一台机器的tomcat下:
五 input
与用户交互输入的task
六 exec
执行其他进程的task
七其他的task
if task
ant原来可以在target级进行if判断(unless,if 属性),但实在太不方便了。
Conditions
但Ant预先封装的一堆condition很是很方便的。这些condition完全从实际出发,包括文件是否存在, http://localhost:8080是否连通都可以作为条件,见Ant的参考手册。
For task
支持"a,b,c,d" 字符串数组的循环与文件目录,Fileset的循环。
Parallel task
Parallel非常有用,比如我想一边开tomcat,一边做别的,就需要使用它,否则就只有用spawn=true属性把tomcat放在后台运行。spawn有很多不好的地方,比如不能即时在console看到信息,停止ant运行不能把tomcat关掉等。
Parallel相当于一个容器,放在里面的每个task都会被并行执行。如果想把某几个task顺序执行,用相当于()的Sequential task 包起来。
Waitfor task
暂停ant执行直到条件符合,比如<waitfor><http url=http://localhost:8080/></waitfor>就会等待tomcat启动后才会继续往下执行。
八 antcall 与ant
depends:depends中的targets在本target执行前按照从左到右的定义顺序调用。
antcall : 用来调用同一个build.xml中的其他的target,相当于高级语言中的函数调用。
ant: 调用其他的build.xml中的target。
九 自定义TASK的使用
ANT已经内置了不少task,像copy、replace、javac等等,但是有时候还需要一些特定的任务来完成操作,比如在生成JAD文件 时,需要一个Midlet-Jar-Size的参数,得到JAR文件的大小,但是通过内部的task无法实现,因此可以自己编写类来实现此功能,但必须保 证该类是从Task类继承过来的。
例:
完!
作者:iTech
微信公众号: cicdops
github: https://github.com/cicdops/cicdops

边栏推荐
- 面试必备:虾皮服务端15连问
- Excellent Kalman filter detailed article
- 活体检测综述
- 3D restoration paper: shape painting using 3D generative advantageous networks and recurrent revolutionary networks
- GBase 8a MPP集群扩容实战
- 安装CUDA失败的情况nsight visual studio edition失败
- Sentinel ten thousand word tutorial | book delivery at the end of the text
- S交换机堆叠方案配置指南
- 35 spark streaming backpressure mechanism, spark data skew solution and kylin's brief introduction
- VS2019+CUDA11.1新建项目里没有CUDA选项
猜你喜欢

Oracle RAC 19C PDB instance is down

面试京东 T5,被按在地上摩擦,鬼知道我经历了什么?

Shell的read 读取控制台输入、read的使用

Understand chisel language. 22. Chisel sequential circuit (II) -- detailed explanation of chisel counter: counter, timer and pulse width modulation

Talk about 10 scenarios of index failure. It's too stupid

It's great to write code for 32 inch curved screen display! Send another one!

吃透Chisel语言.26.Chisel进阶之输入信号处理(二)——多数表决器滤波、函数抽象和异步复位

S switch stacking scheme configuration guide

Looking for a job for 4 months, interviewing 15 companies and getting 3 offers

XML overview
随机推荐
Shell function, system function, basename [string / pathname] [suffix] can be understood as taking the file name in the path, dirname file absolute path, and user-defined function
Final examination paper of engineering materials
VS2019+CUDA11.1新建项目里没有CUDA选项
Understand chisel language. 24. Chisel sequential circuit (IV) -- detailed explanation of chisel memory
QT learning (II) -- a brief introduction to QT Creator
省应急管理厅:广州可争取推广幼儿应急安全宣教经验
Oracle RAC 19C PDB instance is down
安装了HAL库如何恢复原来的版本
Shell的正则表达式入门、常规匹配、特殊字符:^、$、.、*、字符区间(中括号):[ ]、特殊字符:\、匹配手机号
Nacos configuration center dynamically refreshes the data source
What happens if the MySQL disk is full? I really met you!
Qt 学习(二) —— Qt Creator简单介绍
找工作 4 个月, 面试 15 家,拿到 3 个 offer
数据分析如何解决商业问题?这里有份超详细攻略
Understand chisel language. 25. Advanced input signal processing of chisel (I) -- asynchronous input and de jitter
hdu5289(Assignment)
C # set different text watermarks for each page of word
WGAN、WGAN-GP、BigGAN
Flash memory usage and stm32subemx installation tutorial [day 3]
面试京东 T5,被按在地上摩擦,鬼知道我经历了什么?