`

[转]ant fileset 用法

    博客分类:
  • ant
阅读更多
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就行了。

 

分享到:
评论

相关推荐

    ant实用实例 详细解析ant的用法

    ### ant实用实例 详细解析ant的用法 #### 一、Ant简介与基本概念 Apache Ant 是一个Java环境下的开源项目构建工具,主要用于自动化构建、部署等任务。它使用XML来描述构建过程,并且提供了丰富的任务(task)集合,...

    ant1.9资源

    &lt;fileset dir="." includes="**/*.bak"/&gt; 3. mkdir任务 创建目录。eg: 4. move任务 移动文件或目录,举例如下: Eg1. 移动单个文件:&lt;move file="fromfile" tofile=”tofile”/&gt; Eg2. 移动单个文件到另一...

    Ant 1.9.2 API (CHM格式)

    注: FileSet的setIncludes, 和setExcludes方法输入pattern, pattern是一个使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目录,“*.*”代表说有文件, “*.java”代表所有扩展名为java的文件。...

    ant使用手册ANT使用指南

    本教程旨在提供Ant的基本使用方法,适合初学者学习。 #### 二、Ant的基础知识 ##### 2.1 什么是Ant? Apache Ant是一个基于Java的构建工具,其名称源自“Another Neat Tool”(另一个整洁的工具)的首字母缩写。...

    Junit+Jacoco+ant集成使用

    解压后,你可以查看其中的文件,了解具体配置和使用方法。通过运行Ant任务,你将能实际运行测试并生成覆盖率报告。 总结,集成JUnit和JaCoCo到Ant项目中,可以有效地进行自动化测试并获取代码覆盖率报告,这对于...

    Ant使用详细介绍(中文版)

    Ant 使用详细介绍 Ant 是什么? Ant 是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简易的方式来构建整个项目。Ant 究竟能做什么呢?这取决于 Ant 的任务(Task),Ant 有...

    Eclipse下Ant+Junit构建文件

    &lt;fileset dir="src/test"&gt; **/*Test.java"/&gt; &lt;/fileset&gt; ``` 这段代码会在`src/test`目录下查找所有以"Test"结尾的Java类,并运行其中的测试方法。测试结果会被写入到`test-reports`目录下的文件中。 此外...

    Java调用Ant API用法收集

    当需要处理多个文件时,可以使用`FileSet`类来指定一组文件,这样就可以更加灵活地控制文件操作: ```java import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Copy; import org.apache....

    Java使用Ant批量把文件打成ZIP压缩包

    在这种场景下,Apache Ant工具提供了一种高效且灵活的方法。Ant是一个基于XML的构建工具,它允许开发者通过简单的配置文件来定义构建过程,包括编译、测试、打包等任务。下面我们将详细探讨如何使用Ant来实现Java...

    Ant入门-ant入门pdf

    《Ant入门》是一本专为初学者设计的电子书,主要涵盖了Apache Ant这一构建工具的基础知识和使用方法。Ant是Java开发中广泛使用的自动化构建工具,由Apache软件基金会开发,其设计目标是简化项目构建过程,使开发者...

    ant入门资料.快速上手

    &lt;fileset dir="." includes="**/*" excludes="**/.svn/**"/&gt; ``` - **删除当前目录下所有的svn相关文件**: ```xml &lt;fileset dir="." includes="**/.svn/**"/&gt; ``` - **删除文件目录树**: ```xml ``...

    基于ant.jar的文件压缩工具类

    在`compress`方法中,我们使用`FileSet`来指定要压缩的源文件或目录,然后通过`ZipOutputStream`创建ZIP文件。在遍历每个文件时,我们读取文件内容并将其写入ZIP流。`unzip`方法则通过`ZipInputStream`逐个处理ZIP...

    ant帮助文档ant帮助文档ant帮助文档

    - 文件集允许你指定一组文件,如`&lt;fileset dir="src" includes="**/*.java"/&gt;`会选择所有src目录下的Java源文件。 7. **路径(Path)** - `&lt;path&gt;`元素用于创建一个类路径,可以包含目录和JAR文件,方便在编译或...

    Ant 批处理 Unicode转码

    4. 针对不同的需求,选择合适的编码转换方法,如使用Java I/O类或自定义Ant任务。 在实际开发中,根据项目的具体需求,可能还需要处理更多复杂情况,例如递归处理子目录、跳过已经正确编码的文件等。熟练掌握这些...

    Ant入门学习 本内容包含了Ant的历史简要介绍,Ant的功能以及Ant框架的介绍,并对下载安装使用Ant进行了示例介绍,同时通过一个Java程序讲解了Ant的基本使用方法。

    &lt;fileset dir="dist"/&gt; ``` 在这个例子中,`init`目标创建了必要的目录,`compile`目标编译源代码,`doc`目标生成Java文档,而`deploy`目标则负责打包JAR文件并上传至FTP服务器。`depends`属性指定了目标间的...

    Ant工具使用(电子书PDF)

    本电子书PDF详细介绍了Ant的使用方法,帮助开发者更好地理解和应用这一工具。 **一、Ant简介** Ant是基于Java的构建工具,它的设计目标是简化Java项目的构建过程,提供一种可配置、可扩展的方式来编译、打包和测试...

    Ant应用开发指南(学习ant的必备资料)

    《Ant应用开发指南》是IT领域中针对Ant构建工具的一份详尽的教程与资源,旨在帮助开发者深入了解并掌握Ant的使用方法与实践技巧。Ant,最初作为一个缩写代表“Another Neat Tool”,是一个功能强大的构建工具,尤其...

    Ant 1.9.1 学习笔记

    定义路径时,可以使用通配符和文件集(fileset),这对于管理文件和目录非常有帮助。在定义任务时,可以利用Ant提供的大量内置功能,如拷贝文件、压缩解压缩、生成文档等,也可以扩展自定义任务以满足特殊需求。 在...

Global site tag (gtag.js) - Google Analytics