`

ant 的 copy 使用

    博客分类:
  • ant
 
阅读更多

【转】http://www.cnblogs.com/xd502djj/archive/2011/07/28/2119466.html

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/**"/>                             

                <include name="ibatis/**,**"/> <!--整个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.jar下载

    org.apache.tools.ant.taskdefs.Copy org.apache.tools.ant.taskdefs.Echo org.apache.tools.ant.taskdefs.Exec org.apache.tools.ant.taskdefs.Exit org.apache.tools.ant.taskdefs.GZip org.apache.tools.ant...

    Ant 批处理 Unicode转码

    NULL 博文链接:https://jsjxqjy.iteye.com/blog/415572

    替换文本文件中Ant表达式的Ant扩展任务

    &lt;taskdef name="copy-with-replace" classpath="${basedir}/release/ant-task-ext.jar;${basedir}/lib/ant-1.9.1.jar;${basedir}/lib/commons-lang-2.6.jar" classname="kingspider.tools.ant.task....

    jocky 混淆编译 ant

    1. 将lib/jocky-ant.jar copy 至ANT_HOME/lib下。 2. 在ant配置文件中添加 3. 设置Jocky的一些基本属性,包括jocky.jar包的位置,以及混淆编译级别: 4. 当设置jocky的enable属性为true时,此时,Ant脚本中的javac...

    apache-ant-1.7.1-bin.zip_Ant 1.7_Apache-Ant 1.7.1_ant1.7_apache

    copy/&gt; are now able to process not only file system resources but also zip entries, tar entries, paths, ... Resource collections group resources, and can be further combined with operators such as ...

    Ant 1.9.2 API (CHM格式)

    注:对每一个Ant Task,如Mkdir,Delete、Copy、Move、Zip等,都必须设置一个Project对象,可以几个Ant Task共用一个Project对象,但不能有Ant Task不设置Project对象。 2. 文件拷贝和移动、更名 1)文件copy 1. ...

    ant1.9资源

    Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。下面来看几个知识点。 1. 利用Ant的javac任务来编译java程序 Ant的javac任务用于实现编译Java程序的功能。下面来...

    ant学习打包代码

    &lt;!--官方网站:http://ant.apache.org/--&gt; &lt;!--定义文件目录的name和value--&gt; ... &lt;echo message="ant发现Java虚拟机的版本:${ant.java.version}" /&gt; 项目的绝对路径:${basedir}"/&gt; &lt;/project&gt;

    ant导出jar包例子

    用ant构建一个项目,copy一个build.xml仅做了一个打包的功能测试。

    ant远程上传并部署tomcat

    ant脚本,讲本地代码copy到远程linux服务器的tomcat目录下,并重启tomcat,需要下载jsch.jar包放到本地ant-home的lib目录下

    jmeter+ant所需要的build.xml文件

    第一次做jmeter+ant自动化接口测试,需要build文件,开始直接copy博客中的内容,格式不对,调试好久不成功;后发现在jmeter/extras文件夹中有一个build文件,copy出来根据需要修改下,成功了,特上传自选供大家使用...

    Ant使用指南

    Ant使用指南(一). 管理你的代码,doc文件,编译,配置等开发工作你是怎末做的:自己管理源目录,编译文件,copy,实施

    ant-design-vue-pro-copy

    ant-design-vue-pro项目设置yarn install编译和热重装以进行开发yarn serve编译并最小化生产yarn build运行单元测试yarn test:unit整理和修复文件yarn lint自定义配置请参阅。

    使用ant编译之签名问题1

    (ps,这就是使用ant编译好处,问题出现位置很清楚),这是由于文件” custom_rules.xml”67行清清楚楚这样写着” &lt;copy file="${

    utils4ant:Ant 的实用程序任务和类型

    欢迎使用 Utils4Ant! 该项目(将)为 Ant 托管以下实用程序(任务、类型、映射器、过滤器等) Java API AntLauncher:如何从 Java 启动 ant 任务 FastCopy : 文件复制,比ant的原版快 Timer : 测量嵌套任务...

    jocky 混肴编译rar包(ant和插件俩个版本)

    事实上,在Eclipse中使用Jocky时,Jocky也是首先针对所选工程生成Ant的Build文件(默认名称jocky_build.xml),然后再通过Ant完成混淆编译。 以下是Jocky在Eclipse中自动生成的Ant Build 文件示例: 1 ...

    ant-design表单处理和常用方法及自定义验证操作

    首先要说一下antdesign这个框架API和...我们可以copy一个Form表单的demo。 LoginForm是表单的组件,下面代码,是React 高阶组件(Hoc)。 用于使组件获取 this.props.form 下面介绍一些常用的 this.props.form的方法。

    antdemo:蚂蚁演示

    #antdemo ##Antroduction antdemo - 蚂蚁演示##执照 Copyright (C) 2013 Snowdream Mobile &lt;yanghui1986527&gt;Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except ...

    java视频聊天

    (可选的)假设[Jitsi桌面)项目是在相同的父目录你可以叫“copy-jitsi-bundles”ant目标。这将同步Jitsi包。Ant目标可以找到“Ant构建”工具窗口中(查看窗口- &gt;工具- &gt; Ant构建)。 3所示。前建筑第一次调用ant目标...

    基于Spring Cloud 和Ant Design Pro实现前后端管理平台一站式脚手架

    本项目基于Spring Cloud 和Ant Design Pro实现前后端管理平台一站式脚手架,便于快速开发企业级应用。我们的愿景是 基于Copy&Paste技术,实现面向Google&Baidu编程

Global site tag (gtag.js) - Google Analytics