- 浏览: 3445687 次
- 性别:
- 来自: 珠海
-
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://huanyue.iteye.com/blog/933346
最近用到了Ant,发现还是有许多功能是Ant没有提供相应Task支持,而操作系统 提供了相应的系统命令。
Ant说明书上说了, 用<exec>可以调用系统命令,实际操作起来才发现陷阱可不少,一不小心就会掉下去。
下面以按日期倒序列举当前目录下文件为例说 明。
对于Windows平台,命令是:dir /o:-d
对于Unix(包括Linux , 下同)平台,命令是 ls –ltr
陷阱1:调用谁?
这在Ant文档中已经提到了,在Windows下,不能直接调 用dir、del(因为没有这个程序!)等,必须通过cmd.exe来调用:
对 于Unix,则可以直接调用ls:
也 可以指明由Shell调用
我 觉得后者要好一些,否则无法保证调用的是否系统命令,
因为只要Path环境变量指明的路径下有一个同名的程序,都可能被调用到。
通过 Shell调用,Windows必须加 /c,Unix则是加 –c 。
陷阱2:arg line, arg value 还有引号
假如我们扩充Windows平台下的例子,满足按修改时间倒序的要求:
成 功。换Unix了:
对不起,失败:java .lang.IOException。
之 所以这样,是因为<arg line>把每个空格分隔的字符串作为参数传给调用程序,
但是对于”/bin/sh”来说,”ls –ltr”应该是一个参数而不是两个。
解决办法有两个:
加引号:
或 者使用<arg value>:
陷 阱3:阻塞(block)
不论是Windows还是Unix,调用一个程序后都必须等到该操作结束才能继续作下面的操作。
如果你想 调用一个程序的同时还做其它的工作 ,必须使 用<parallel>:
需 要注意的属性:
dir 指明程序执行的路径。对搜索程序也有影响
os 指明执行的平台
failonerror 缺省为false,即该命令执行了但是失败了,build仍然继续
最近用到了Ant,发现还是有许多功能是Ant没有提供相应Task支持,而操作系统 提供了相应的系统命令。
Ant说明书上说了, 用<exec>可以调用系统命令,实际操作起来才发现陷阱可不少,一不小心就会掉下去。
下面以按日期倒序列举当前目录下文件为例说 明。
对于Windows平台,命令是:dir /o:-d
对于Unix(包括Linux , 下同)平台,命令是 ls –ltr
陷阱1:调用谁?
这在Ant文档中已经提到了,在Windows下,不能直接调 用dir、del(因为没有这个程序!)等,必须通过cmd.exe来调用:
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="cmd.exe"> <arg line="/c dir"/> </exec> </target> </project>
对 于Unix,则可以直接调用ls:
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="ls"/> </target> </project>
也 可以指明由Shell调用
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="/bin/sh"> <arg line="-c ls" /> </exec> </target> </project>
我 觉得后者要好一些,否则无法保证调用的是否系统命令,
因为只要Path环境变量指明的路径下有一个同名的程序,都可能被调用到。
通过 Shell调用,Windows必须加 /c,Unix则是加 –c 。
陷阱2:arg line, arg value 还有引号
假如我们扩充Windows平台下的例子,满足按修改时间倒序的要求:
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="cmd.exe"> <arg line="/c dir /o-d"/> </exec> </target> </project>
成 功。换Unix了:
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="/bin/sh"> <arg line="-c ls -ltr" /> </exec> </target> </project>
对不起,失败:java .lang.IOException。
之 所以这样,是因为<arg line>把每个空格分隔的字符串作为参数传给调用程序,
但是对于”/bin/sh”来说,”ls –ltr”应该是一个参数而不是两个。
解决办法有两个:
加引号:
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="/bin/sh"> <arg line="-c 'ls –ltr'" /> </exec> </target> </project>
或 者使用<arg value>:
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="/bin/sh"> <arg value="-c" /> <arg value="ls -ltr" /> </exec> </target> </project>
陷 阱3:阻塞(block)
不论是Windows还是Unix,调用一个程序后都必须等到该操作结束才能继续作下面的操作。
如果你想 调用一个程序的同时还做其它的工作 ,必须使 用<parallel>:
<?xml version="1.0" ?> <project name="testExec" default="test"> <target name="test"> <exec executable="notepad.exe"/> <echo message="You must close notepad first!"/> <parallel> <exec executable="notepad.exe"/> <echo message="You do not need to close notepad."/> <parallel> </target> </project>
需 要注意的属性:
dir 指明程序执行的路径。对搜索程序也有影响
os 指明执行的平台
failonerror 缺省为false,即该命令执行了但是失败了,build仍然继续
发表评论
-
FFmpeg常用基本命令
2016-07-15 11:52 0http://www.cnblogs.com/dwdxdy/p ... -
iF.SVNAdmin安装
2016-06-27 17:13 1442http://blog.linhere.com/archive ... -
分布式存储系统GlusterFS安装配置
2016-06-27 14:51 1048http://navyaijm.blog.51cto.com/ ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2518http://my.oschina.net/chengxiao ... -
跟我学习dubbo
2016-06-17 15:20 1087跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1195JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1326freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1118原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2907原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1563http://my.oschina.net/wjme/blog ... -
apache调优
2016-05-21 10:10 1151http://my.oschina.net/renqingsh ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2304http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3480http://www.guokr.com/blog/47576 ... -
Fedora安装Redis
2016-05-04 08:56 1435管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1339集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4823使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2330apache shiro集群实现(一) session共享 h ... -
spring 注解方式下使用commons-validator 验证表单
2016-05-03 11:08 3096原文: http://www.programgo.com/ar ...
相关推荐
了解了基本的Ant概念后,我们可以深入学习Ant的其他特性,如文件集(filesets)、条件语句、宏定义(macros)以及如何调用外部程序。Ant还支持通过类路径(classpath)管理和依赖管理,这对于大型项目尤其重要。此外...
3. **配置环境变量**: 将Ant的`bin`目录添加到系统的`PATH`环境变量中,这样就可以在命令行中直接调用Ant命令。 #### 四、Ant基本使用 - **创建构建文件**:创建一个名为`build.xml`的XML文件,这是Ant的入口点。...
8. `<exec>`:执行外部命令,如Linux的cron job或Windows的任务计划程序。 为了实现增量备份,ANT可能使用了类似于`<uptodate>`的任务来检查源文件和目标文件的时间戳,只有在源文件更新后才进行备份。此外,也可以...
5. **集成外部工具**:Ant支持调用系统级别的命令,如`exec`任务可用于执行shell脚本或外部程序,极大地扩展了构建脚本的功能。 四、Ant高级特性 1. **条件语句和循环**:通过`if`、`unless`属性,可以在构建脚本...
10. ****:执行外部程序或脚本。 四、Ant命令行使用 1. **ant**:执行默认目标(未指定目标时,默认为第一个定义的目标)。 2. **ant [target]**:执行指定的目标。 3. **ant -f [buildfile]**:指定不同的构建...
此外,Apache Ant还支持条件语句、循环、属性文件读取、外部程序调用等多种功能,使得构建过程可以灵活且强大。与其他构建工具(如Maven和Gradle)相比,Ant的灵活性是其一大优势,但配置工作可能更繁琐。在大型项目...
3. **配置环境变量**:在系统的PATH环境变量中添加Ant的bin目录路径,这样可以在任何地方运行Ant命令。 - **Windows**:编辑系统环境变量,添加`ANT_HOME`并指向Ant的安装目录,然后在PATH中添加`%ANT_HOME%\bin`。...
Ant 用 Java 的类来扩展,而不是基于 shell 命令的扩展模式。配置文件是基于 XML 的,通过调用 target 树,就可执行各种 task。每个 task 由实现了一个实现了特定 Task 接口的对象来运行。 Ant 的优点是跨平台的...
- 使用`<exec>`任务执行外部程序,并传递参数,例如: ```xml ``` 上述代码会执行`ping`命令并传递IP地址作为参数。 4. **启动服务**: - 使用`<exec>`任务启动Tomcat服务器,提供了两种方式: ```...
Ant的灵活性体现在它可以与其他工具集成,如JUnit进行单元测试,或者通过`<exec>`任务调用外部命令行工具。此外,Ant支持条件语句(如`<if>`和`<unless>`)和循环结构(如`<foreach>`),这使得构建脚本可以根据不同...
此外,它可以通过`<dependency>`管理外部库,`<taskdef>`引入自定义任务,以及使用`<jar>`打包Java应用程序。 总的来说,Apache Ant是一个强大的工具,对于Java开发者来说,它是构建、部署和自动化项目不可或缺的一...
6. **运行Ant脚本**:在命令行中执行`ant <target>`命令,如`ant package`,Ant会根据build.xml文件中的配置执行打包任务。 7. **多渠道打包**:在脚本中添加循环或者条件判断,遍历所有渠道的配置文件,为每个渠道...
6. **支持外部工具**:Ant可以调用Java以外的工具,如编译器、数据库客户端等,通过`exec`任务来执行命令行程序。 7. **条件语句**:Ant提供了if和unless属性,允许根据特定条件决定是否执行某项任务。 8. **多...
- `<exec>`:执行外部程序,比如Java应用或系统命令。 4. **Ant的条件与选择**: - `<if>`和`<unless>`:根据条件执行任务。 - `<condition>`:定义条件,可以检查属性值、文件是否存在等。 - `<choose>`、`...
7. **外部工具集成**:Ant可以与JUnit进行集成进行单元测试,或者与Maven、Gradle等其他构建工具配合使用。 8. **属性和变量**:如何设置和使用属性,以及如何引用环境变量。 9. **Shell脚本**:在Ant中,可以通过...
Ant可以调用外部程序,如JUnit进行单元测试,或者通过任务执行系统命令。 八、Ant与Maven的比较 虽然Ant具有很高的灵活性,但配置工作较为繁琐。相比之下,Maven引入了约定优于配置的理念,提供了更便捷的依赖管理...
学习笔记可能还会涵盖如何通过Ant调用这些工具。 在实际应用中,你可能会遇到如何处理外部库(dependencies)的问题。Ant提供了`classpath`元素来管理这些依赖,并可以通过`<path>`元素将多个目录或JAR文件添加到类...
13. **`<exec>`**:执行外部程序或脚本,比如执行系统命令或Java应用程序。 ## 自定义标签 Ant 的强大之处在于其可扩展性,可以通过编写Java类实现自定义标签。这使得开发者可以创建自己的任务,处理特定的需求。...
2. 将解压后的目录添加到系统的PATH环境变量中,这样命令行就能识别"ant"命令。 3. 验证安装是否成功,通过命令行输入"ant -version",如果显示Apache Ant的版本信息,则表示已成功安装。 在实际开发中,你需要根据...
Ant 使用XML来描述构建文件,这个构建文件包含了编译、创建JAR文件、运行测试、打包和部署应用程序等任务。"Apache Ant 1.9.2" 版本是该工具的一个特定发行版,它可能包含了自上一版本以来的一些增强和修复。 在Ant...