`

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. 拷贝单个文件到指定目录下。
例:<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就行了。

5.ant copy 东西时,会将目录也copy过去,如果只要内容,不要目录,只要设置 <copy todir="${build.lib}" flatten="true">

分享到:
评论

相关推荐

    ANT使用详细总结与心得

    《ANT使用详细总结与心得》 ANT,全称Apache Ant,是一个Java库和命令行工具,其任务是驱动构建过程。它的设计目标是推动...正确理解和使用ANT,有助于提高开发效率,减少手动操作的错误,是Java开发中的必备技能。

    ant 中文帮助文档

    11. **命令行参数**:学习如何在命令行中使用Ant,包括指定构建目标、传递属性值等。 这份中文帮助文档对于初学者来说是一个很好的资源,因为它提供了详尽的解释和实例,有助于快速上手Ant。通过深入学习,你可以...

    Ant培训全套学习教程

    2. **文件操作**:Ant提供了如delete、copy、move等操作,方便处理文件和目录。 3. **依赖关系**:通过depends属性,可以定义目标之间的执行顺序,确保先执行依赖的目标。 4. **通配符**:使用*和?作为通配符,可以...

    ant ant ant ant

    "Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...

    ANT学习心得【第一部分】

    标题 "ANT学习心得【第一部分】" 暗示了我们即将探讨的是Apache Ant,一个广泛使用的Java构建工具。在Java开发中,Ant是管理项目编译、打包、测试等任务的重要工具,它通过XML配置文件来定义构建过程。这篇博文可能...

    Ant基本应用教程学习

    - 预定义任务和类型:Ant提供了大量的预定义任务和类型,覆盖了构建过程中常见的操作,例如编译、复制、删除、打包等。 - 文件系统操作:Ant能够处理特定平台的文件系统属性,如不同操作系统的文件分隔符,并能够...

    Ant权威指南(ant 学习)

    《Ant权威指南》是一本深度解析Apache Ant...通过学习《Ant权威指南》,开发者可以全面掌握Ant的使用,提升构建效率,确保项目的稳定和可维护性。无论你是初学者还是经验丰富的开发者,这本书都将为你提供宝贵的指导。

    ANT中文文档

    Apache Ant 是一个Java库和命令行工具,其任务是驱动构建过程。...总的来说,ANT中文文档是学习和掌握ANT构建工具的重要参考资料,通过阅读和实践,开发者能够充分利用ANT的强大功能,提升项目构建的效率和质量。

    ant 中文手册2.0

    在Ant中,XML标签用于定义这些任务,比如`&lt;javac&gt;`用于编译Java源代码,`&lt;jar&gt;`用于创建JAR文件,`&lt;copy&gt;`用于文件复制,以及`&lt;mkdir&gt;`用于创建目录等。 在Ant中,属性(property)用于存储可配置的值,可以通过...

    Ant 批处理 Unicode转码

    在Ant中,我们可以使用`&lt;filter&gt;`任务结合`&lt;copy&gt;`或`&lt;move&gt;`任务来实现文件的编码转换。`&lt;filterchain&gt;`元素允许我们创建一系列过滤器,其中可以包含`&lt;replaceregexp&gt;`用于替换特定模式的字符串,或者`...

    ANT初步运行例子,ANT学习

    在“ANT初步运行例子,ANT学习”这个主题中,我们将深入了解Ant的工作原理和基本用法。 Ant是基于XML的,其核心概念是构建文件(build.xml),这个文件包含了构建过程的所有步骤和指令。在提供的文件列表中,"hello...

    Ant 1.9.1 学习笔记

    Ant 1.9.1是Ant的一个版本,学习笔记通常记录了使用该工具的基本操作和配置方法。 ### Ant的下载和安装 要使用Ant,首先需要下载并安装。在Windows系统中,通常需要配置环境变量以便于命令行中使用Ant命令。ANT_...

    Ant中文学习手册2

    《Ant中文学习手册2》是一本专为初学者和进阶者设计的指南,全面涵盖了Ant的基本概念、安装过程以及实战应用。Ant是Apache软件基金会的一个项目,它是一款强大的构建工具,尤其在Java应用程序的构建过程中起着至关...

    ant脚本资料ant

    Ant是Apache软件基金会下的一个项目,它是一款强大的构建工具,主要用在Java环境中,用于自动化构建、测试和部署Java应用程序。Ant使用XML来描述构建过程和依赖关系,使得构建过程可配置且易于跨平台移植。 1. **...

    Eclipse 中ant学习资料

    以下是对Eclipse中Ant学习资料的详细解读: 一、Ant简介 Ant是Apache软件基金会的一个开源项目,它在Java开发环境中被广泛使用。Ant的核心概念是任务(Task),这些任务可以是简单的系统命令,也可以是复杂的构建...

    19_ant_完整操作一个用户管理的小例子_实现了登录

    标题中的“19_ant_完整操作一个用户管理的小例子_实现了登录”表明这是一个关于使用Apache Ant工具进行用户管理系统开发的示例,其中包含了用户登录功能的实现。Apache Ant是Java平台上的一个构建工具,它提供了可...

    ant学习测试工程源码

    【标题】"ant学习测试工程源码"是一个Java开发的学习项目,主要目的是教授如何使用Apache Ant作为构建工具来管理基于Spring、Hibernate和JUnit的软件工程。Ant是一个流行的开源构建工具,它允许开发者通过XML配置...

    ant个人学习笔记和简单示例

    Ant的任务是构建过程中的具体操作,如`javac`用于编译Java源代码,`jar`用于创建JAR文件,`copy`用于复制文件等。通过配置这些任务的属性,你可以定制你的构建流程。例如,`javac`任务可以指定源代码目录、目标目录...

Global site tag (gtag.js) - Google Analytics