`
7090
  • 浏览: 278559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)Ant脚本copy用法

    博客分类:
  • 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. 拷贝单个文件到指定目录下。
例:

Java代码
  1. <copy todir= "${basedir}/new"  file= "${basedir}/old/old1.txt1" >  


将${basedir}/old /old.txt文件拷贝到${basedir}/new下

2. 拷贝一批文件到指定目录下
例:

Java代码
  1. <copy todir= "${basedir}/new" >  
  2.            <fileset dir="${basedir}/old" >  
  3.               <include name="old1.txt"  />  
  4.               <include name="old2.txt"  />  
  5.               <exclude name="old8.txt"  />  
  6.           </fileset>  
  7. </copy>  


这里fileset定义的是原文件的组成形式,<include/>子属性表示包括,<exclude/>子属性表示排除,很简单,通过他们组合实现多文件的筛选,当然我这个例子用得很傻。比如

Java代码
  1. <include name= "appgen/**" />  
  2. <include name="ibatis/**" />  
  3. <exclude name="**/*.log" />  


拷贝appget目录和ibatis目录下除了.log文件以外的其它所有文件和子目录。

可以把<fileset/>简写成

Java代码
  1. <fileset dir= "${basedir}/old"  includes= "old1.txt,old2.txt"  />  

,includes可以理解成include的复数形式,包含多个文件时用逗号隔开,excludes也一样。

3. 拷贝一个目录到指定目录下
例:

Java代码
  1. <copy todir= "${basedir}/new" >  
  2.            <fileset dir="${basedir}/old" >  
  3.              <include name="appgen"  />  
  4.              <include name="appgen/"  />  
  5.              <include name="appgen/**"  />  
  6.              <include name="appgen/***"  />  
  7.            </fileset>  
  8. </copy>  


同样使用<fileset/>属性,name指定目录名,不过这里要分两种情况,用<include/>子属性和不用<include/>子属性.
若使用<include/>, 又要分三种情况
若是“appgen”,则只会拷贝名为appgen的空目录过去,它里面的文件和子目录则不会拷贝。
若是“appgen/”,或“appgen/**”,则会把整个appgen目录拷贝过去,包括里面的文件和子目录。
若是“appgen/*”,则只会把该目录和该目录下第一级子目录的所有东西拷贝过去,而不会拷贝第二级和第二级以下的。注:“appgen/*”这儿是 一个*号,*号若大于两个,也跟一个*号是同样效果。比如“appgen/*”和“appgen/****”都只拷贝appgen目录下第一级子目录。

注:若appeng这个目录本身就是个空目录,无论怎么写,这个空目录都不会被拷贝。也就是说,copy操作不会产生创建空目录的作用,要想创建空目录,只有用mkdir。

若不使用任何<include>属性,如

Java代码
  1. <fileset dir= "${basedir}/old" >  
  2.            </fileset>  


则会拷贝${basedir}/old下的所有文件和子目录。

注:使用<exclude/>排除目录时,目录名必须写成 “appgen/”或“appgen/**”形式,否则不会生效。

以上是三种拷贝到目录的种类,注意如果计算机中没有 todir指定的路径,ant将会自动创建这个路径。

4. 拷贝单个的文件:
〈copy tofile="old.txt" file="new.txt" /〉就这么简单就行了。
当然也可以写成

Java代码
  1. <copy tofile= "${basedir}/new/new.txt" >  
  2.      <fileset dir="${basedir}/old"  includes= "old.txt"  />  
  3. </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

    通过阅读`命令.txt`、`ant知识.txt`、`ant构建Java.txt`、`ant例子.txt`这些文件,你可以深入了解Ant的使用方法,包括命令行调用、具体的构建步骤、Java项目构建实例以及各种任务的实践应用。这些资料将帮助你掌握...

    常用的ANT蚂蚁脚本

    在`build.xml`或`build1.xml`这样的ANT脚本中,可能会包含使用XDoclet的任务定义,例如`&lt;xdoclet&gt;`任务,来执行这一步骤。 2. **部署EJB项目**: EJB(Enterprise JavaBeans)是Java EE平台的核心组件,用于构建可...

    ANT脚本学习与开发指导

    这个“ANT脚本学习与开发指导”文档,显然是为了帮助初学者掌握ANT的基本用法和高级技巧。下面,我们将深入探讨ANT的核心概念、用途、基本结构以及如何进行实际操作。 一、ANT简介 ANT是Apache软件基金会的一个项目...

    ant脚本文档学习

    在"ant脚本文档学习"的过程中,你可能会接触到Ant的命令行用法,如何配置IDE(如Eclipse或IntelliJ IDEA)来集成Ant,以及如何通过引入外部的构建文件来共享和重用构建逻辑。 最后,Ant的构建文件遵循一定的最佳...

    ant获取SVN版本信息的jar包xmltask以及安装,使用方法

    这个jar包(xmltask.jar)提供了一种方式,使得我们可以在Ant脚本中添加、删除、修改XML元素,这对于读取和处理SVN版本信息非常有用,因为SVN的版本信息通常存储在XML格式的svn:log属性中。 要使用XMLTask,首先...

    Ant 1.9.2 API (CHM格式)

    Move的用法和Copy用法基本一致,Move本身为Copy的子类。 1. Project prj=new Project(); 2. Copy copy=new Copy(); 3. copy.setProject(prj); 4. copy.setFile(new File("d:tempf1.txt"); 5. copy.setTodir(new ...

    Ant 批处理 Unicode转码

    以下是一个简单的Ant脚本示例,演示如何将一批文件从GBK编码转换为UTF-8编码: ```xml 转换" basedir="."&gt; &lt;copy todir="${dest.dir}"&gt; ${src.dir}"&gt; &lt;!-- 指定需要转换的文件类型 --&gt; **/*.txt"/&gt; ...

    ant远程上传并部署tomcat

    1. **Ant脚本**:Ant是基于Java的任务驱动的构建系统,通过XML文件(通常是`build.xml`)来定义构建过程,包括编译、测试、打包、部署等步骤。这里的Ant脚本被用于自动化远程部署的过程。 2. **本地代码copy到远程...

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

    从这个最简单的构建脚本中,我们可以知道脚本的基本编写方法: 1. 脚本的根元素是: 2. 所有的任务,必须通过一个标签包围,一个标签,可以包含多个任务。 3. &lt;copy&gt;标签描述了一个任务,这些任务必须放到一个标签...

    ant中文手册(新版) ant使用教程

    本手册详细介绍了Ant的工作原理、基本概念、配置语法以及各种任务的使用方法,旨在帮助开发者高效地管理项目构建流程。 在Ant中,构建过程被定义在一个名为`build.xml`的XML文件中,这个文件包含了所有构建任务的...

    ant包+示例

    "Ant入门"可能是这个压缩包中的主要教程或者指南,它可能涵盖了Ant的基本概念、安装步骤、XML配置文件的结构、常用任务的使用方法以及如何编写自定义任务等内容。在Ant的学习过程中,了解这些基础知识是非常关键的。...

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

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

    ant使用手册ANT使用指南

    ### ant使用手册ANT使用指南 ...通过本教程的学习,你应该能够掌握Ant的基本使用方法,并能根据项目需求编写出高效的构建脚本。随着经验的积累,你可以进一步探索Ant的高级特性,以满足更为复杂的需求。

    Ant 入门资料(完整版)

    观看者可能会了解到如何通过Ant脚本来编译Java源代码、创建JAR文件、执行测试等日常开发任务。 "ANT.ppt":这是一个PowerPoint演示文稿,通常会包含Ant的关键概念、用法示例和最佳实践。可能的内容包括Ant的任务...

    Ant入门-ant入门pdf

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

    ANT详细教程加world文档

    这个Word文档可能详细讲解了ANT的使用方法、配置步骤、常见问题及其解决策略,是学习和理解ANT的好资料。 【标签】:“ANT详细教程加world文档” 标签是对内容的简要概括,再次强调了资源的主题是关于ANT的教程和...

    对ant工具使用,比较不错的电子书!!!

    这些核心任务的使用方法将在书中详述。 4. **第三方任务和宏定义**:除了内置任务,Ant还允许用户自定义任务或使用第三方插件。书中可能涵盖如何引入和使用这些额外的任务。 5. **依赖关系与目标执行顺序**:Ant...

    ant 编程资料,真的很棒

    掌握常用任务的使用方法是基础。 4. **属性(Properties)**:属性允许在构建过程中存储和传递值,它们可以是全局的或局部的,通过property元素进行定义和引用。 5. **条件(Conditions)**:条件用于控制流程的...

Global site tag (gtag.js) - Google Analytics