Ant真是太方便了,以前都没注意到它。功能很强大,能创建数据库,配置服务器,部署发布应用……只需要写好build.xml文件,剩下的就交给ant来“安装”你的WEB应用了。
Appfuse 的第一个ant命令是ant new,其任务是建立一个新命名的project,少不了会复制很多文件。build.xml中也有很多copy操作,为了搞清楚ant new到底干了些什么事,还是先把copy操作了解一下。看了会ant的DOCS,网上也找了些文章,发现copy这部分都是一带而过,讲得很浅,于是我就只有自己实验下,发现还有点收获。 ant版本为1.6.5。
1. 拷贝单个文件到指定目录下。
例:<copy todir="${basedir}/new" file="${basedir}/old/old1.txt1">
将${basedir}/old/old.txt文件拷贝到${basedir}/new下
2. 拷贝一批文件到指定目录下
例:<copy todir="${basedir}/new">
<fileset dir="${basedir}/old">
<include name="old1.txt" />
<include name="old2.txt" />
<exclude name="old8.txt" />
</fileset>
</copy>
这里fileset定义的是原文件的组成形式,<include/>子属性表示包括,<exclude/>子属性表示排除,很简单,通过他们组合实现多文件的筛选,当然我这个例子用得很傻。比如
<include name="appgen/**"/>
<include name="ibatis/**"/>
<exclude name="**/*.log"/>
拷贝appget目录和ibatis目录下除了.log文件以外的其它所有文件和子目录。
可以把<fileset/>简写成<fileset dir="${basedir}/old" includes="old1.txt,old2.txt" />,includes可以理解成include的复数形式,包含多个文件时用逗号隔开,excludes也一样。
3. 拷贝一个目录到指定目录下
例:<copy todir="${basedir}/new">
<fileset dir="${basedir}/old">
<include name="appgen" />
<include name="appgen/" />
<include name=appgen/**" />
<include name="appgen/***" />
</fileset>
</copy>
同样使用<fileset/>属性,name指定目录名,不过这里要分两种情况,用<include/>子属性和不用<include/>子属性.
若使用<include/>, 又要分三种情况
若是“appgen”,则只会拷贝名为appgen的空目录过去,它里面的文件和子目录则不会拷贝。
若是“appgen/”,或“appgen/**”,则会把整个appgen目录拷贝过去,包括里面的文件和子目录。
若是“appgen/*”,则只会把该目录和该目录下第一级子目录的所有东西拷贝过去,而不会拷贝第二级和第二级以下的。注:“appgen/*”这儿是一个*号,*号若大于两个,也跟一个*号是同样效果。比如“appgen/*”和“appgen/****”都只拷贝appgen目录下第一级子目录。
注:若appeng这个目录本身就是个空目录,无论怎么写,这个空目录都不会被拷贝。也就是说,copy操作不会产生创建空目录的作用,要想创建空目录,只有用mkdir。
若不使用任何<include>属性,如
<fileset dir="${basedir}/old">
</fileset>
则会拷贝${basedir}/old下的所有文件和子目录。
注:使用<exclude/>排除目录时,目录名必须写成“appgen/”或“appgen/**”形式,否则不会生效。
以上是三种拷贝到目录的种类,注意如果计算机中没有todir指定的路径,ant将会自动创建这个路径。
4. 拷贝单个的文件:
〈copy tofile="old.txt" file="new.txt" /〉就这么简单就行了。
当然也可以写成
<copy tofile="${basedir}/new/new.txt">
<fileset dir="${basedir}/old" includes="old.txt" />
</copy>
这里includes就只能写一个文件,不能写上多个文件,因为不能将多个文件复制到一个文件中去,所以这样麻烦的写法是没有意义的。
复制肯定还要涉及到同名覆盖的问题,ant在copy类的API中说明:Files are only copied if the source file is newer than the destination file,这里的newer是指文件的修改时间,即使你在修改时文件内容没有任何变化,只是导致修改时间变了,ant同样会覆盖同名文件,也就是说, ant不会检查文件内容。
对于是复制目录的情况,由于目录没有修改时间,ant还是通过检查目录内文件的修改时间来决定是否覆盖的,若目录内某文件修改时间有变化,则会覆盖这个文件,而不是整个目录。
如果要强行覆盖,<copy/>有个overwrite属性,默认为false,改成true就行了。
- 浏览: 3154600 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (706)
- .NET (1)
- Activiti (6)
- aix (6)
- android (2)
- ant (16)
- apache (1)
- BMap (1)
- C# (1)
- cas (3)
- couchbase (1)
- db2 (34)
- ECharts (1)
- eclipse (24)
- ehcache (1)
- Ext (26)
- freemarker (6)
- flash (1)
- g4studio (1)
- GIS (3)
- git (2)
- goagent (0)
- hibernate (3)
- html (1)
- HttpClient (5)
- IIS (3)
- iis7 (3)
- Inno Setup (1)
- iReport (3)
- iText (1)
- jacob (2)
- NetBeans (5)
- JasperReport (1)
- java (62)
- java-web (20)
- jeewx (2)
- jira (2)
- jbpm (1)
- jfreechart (1)
- js (39)
- json (6)
- jQuery (11)
- jQuery easyui (17)
- jstl (1)
- jxl (1)
- Linux (65)
- log4j (3)
- lucene (1)
- maven (25)
- mybatis (6)
- myeclipse (3)
- mysql (20)
- nginx (16)
- office (7)
- openoffice (5)
- OSCache (1)
- Oracle (57)
- Oracle SQL Developer (1)
- pdf (1)
- pl sql developer (4)
- poi (6)
- PowerDesigner (3)
- rsync (1)
- shiro (2)
- spring (21)
- spring mvc (11)
- sql (1)
- SQL Server (1)
- SQL Server 2008 (4)
- SQL Server 2008 R2 (1)
- SVN (12)
- swing (13)
- tomcat (6)
- UltraEdit (5)
- VMware (18)
- web (1)
- weblogic (19)
- WebService (2)
- WebSphere (25)
- win7 (5)
- windows (4)
- Windows Server 2008 (7)
- Xmanager (1)
- zxing (1)
- b标准化 (1)
- c测试 (12)
- d打印 (1)
- f负载均衡 (1)
- j加密 (1)
- l浏览器 (3)
- r日志 (1)
- s上传下载 (8)
- s随笔 (1)
- t图表工具 (1)
- w网络 (1)
- w微信 (1)
- x系统工具 (2)
- y硬件 (9)
- junit (1)
- FTPClient (3)
- xml (3)
- easyui (1)
- websphere7 (1)
- redis (5)
- UNIX (4)
- java, (0)
- ace admin (3)
- lombok (1)
- jquery ui (3)
- jqGrid (1)
- jsTree (1)
- dubbo (1)
- zookeeper (1)
最新评论
-
happyqing:
skyshowshow 写道[b][/b]DTO类呢baseD ...
Java打印条码,使用佳博条码打印机 -
skyshowshow:
[b][/b]DTO类呢baseDto呢
Java打印条码,使用佳博条码打印机 -
happyqing:
一般使用公钥加密,私钥解密。
java RSA加密生成license,用CPU序列号生成机器码 -
allmyteacher:
楼主。使用分布式session后,能解决freemarker无 ...
spring session redis 配置 -
masuweng:
代码报异常啊
纯java获取CPU序列号,生成机器码
发表评论
-
ant错误: 程序包javax.crypto不存在
2014-06-15 23:19 5592在javac的bootclasspath中加入${ ... -
ant 一些特殊标签
2014-01-14 16:22 1289Eclipse可以生成build.xml,可供参考 ... -
ant 文件或文件夹改名
2014-01-14 16:15 1904<move file="aa" ... -
ant执行另一个文件里的target
2014-01-14 16:10 1417ant执行另一个文件里的target <ta ... -
ant只复制目录树(文件夹)
2014-01-14 11:28 1326<target name="c ... -
java Ant+yuicompressor批量压缩混淆js,css
2014-01-13 17:52 4885需要先下载 yuicompressor yuico ... -
ant Rplace 批量在文件中替换
2013-08-19 15:06 2562replace 可以替换某个文件中的字符串。 <? ... -
用Ant打Jar包--在Manifest中引用Classpath
2013-08-15 18:34 2831在打jar包时,往往需要在manifest文件中设置 ... -
Ant打包时,如何保留类文件内容的行号
2013-08-15 16:08 2266有时候将自己的程序打包成jar文件作为类库调用,出错 ... -
ant 警告:sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除
2013-08-15 18:37 6068ant 警告:sun.misc.BASE64Decoder ... -
ant 读取环境变量的值
2013-08-14 16:07 2131<!-- 指定环境变量参数为:SystemVa ... -
Ant编译utf-8非法字符:/65279 解决方法
2013-08-10 22:04 1597使用ant编译java文件时报非法字符(不可见的)问题 ... -
ant编译报软件包 javax.servlet 不存在
2013-08-10 21:54 3952在编译Servlet文件的时候出错:软件包 javax.s ... -
warning: 'includeantruntime' was not set
2013-06-24 13:42 1722[javac] D:\workspace3.7_gs\ant ... -
win7 ANT下载配置
2013-06-21 17:48 1654下载地址http://ant.apache.org/ ...
相关推荐
ant用法说明用法说明用法说明
ant的一些用法 基本的用法 api
ant实用实例, 详细解析ant的用法, pdf格式,电子书
7. FileSet fileSet=new FileSet(); 8. fileSet.setDir(new File(eosHome "/base/template.app")); 9. fileSet.setIncludes("**/*.xml"); 10. copy.addFileset(fileSet); 11. 12. FilterSet filter=copy....
<fileset dir="." includes="**/*.bak"/> 3. mkdir任务 创建目录。eg: 4. move任务 移动文件或目录,举例如下: Eg1. 移动单个文件:<move file="fromfile" tofile=”tofile”/> Eg2. 移动单个文件到另一...
介绍了使用Java调用Ant API进行文件部署操作等常用的用法。
org.apache.tools.ant.types.FileSet org.apache.tools.ant.util.DOMUtils org.apache.tools.ant.util.Watchdog org.apache.tools.ant.AntClassLoader org.apache.tools.ant.BuildException org.apache.tools....
ant ant ant antant ant ant antant ant ant ant
ant ant下载 ant配置ant ant下载 ant配置ant ant下载 ant配置
ANT文件详解 ant介绍 ANT 命令
ant工具ant资源包
开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6...
ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解ant 讲解
ant配置ant配ant配置ant配置置
此存储库演示了在现有ReactPWA项目中Ant Design的用法和集成。入门1.将存储库克隆到本地PC并进行安装git clone https://github.com/Atyantik/example-pawjs-ant-design.git reactpwa-ant && cd reactpwa-ant2.安装...
hello-ant 项目 ,学习ant工具的build file. 参照ant的jakarta-ant-1.6alpha的build.xml Copyright (c) 2002 The Neusoft Software Foundation. All rights reserved.
ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY ANT COLONY
Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源 Ant 资源
kingspider.tools.ant.task.CopyWithReplace by Kingspider email: kingspider70s@hotmail.com 该程序为Ant的扩展任务,在拷贝文本格式的文件的同时替换文件中的Ant表达式,类似于 ${property.name},属性值来自于...