`
271788203
  • 浏览: 483697 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

ant copy exclude

    博客分类:
  • Ant
 
阅读更多

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就行了。

分享到:
评论

相关推荐

    FastCopy 源代码

    Include/Exclude Filter (UNIX Wildcard style) can be specified. &lt;br&gt; &lt;br&gt;It operates lightly because MFC is not used, and it makes it only from Win32 API. &lt;br&gt;Because all source codes have ...

    xcopy与EXCLUDE参数的用法

    xcopy与EXCLUDE参数的用法 xcopy与EXCLUDE参数的用法 xcopy与EXCLUDE参数的用法

    exclude

    exclude

    FastCopy_3.26_X86

    Fastcopy是一款速度非常快的文件拷贝软件。 参数: /cmd=(noexist_only|diff|update| sync|force_copy|move|delete) noexist_only 复制-如重名,则不复制 diff 复制-如重名,则仅复制大小与时间不同的文件 ...

    Android 如何实现exclude aar包中的某个jar包

    注意,要使用exclude module这种方式,直接使用exclude group方式没有效果。exclude group的方法适用于exclude JAR包中的文件。 implementation(name: '×××××××aar包', ext: 'aar') { exclude module: '...

    极品快速复制工具FastCopy2.01中文绿色版(170K)

    极品快速复制工具FastCopy 2.01中文绿色版 xzpd2012评语:像这样的复制小工具网上还有其他几个,但据说这个是复制速度最快,最稳定的,还可以断点续传。 Fastcopy是日本的最快的文件拷贝工具。磁盘间相互拷贝文件...

    android 多渠道 sourceset main文件夹下和其他渠道下的java文件重复 exclude方式解决

    android 多渠道 sourceset main文件夹下和其他渠道下的java文件重复 exclude方式解决

    copycode:命令行源代码管理工具

    复制码 Copycode使您能够将代码项目的一部分复制到另一个位置,可用于一次更新本地副本或多个项目,或者共享文件并自动将其交付或备份(仅复制到本地计算机中)。 如何安装 ... " exclude " : [ " co

    Fastcopy(快速拷贝专家)1.8

    Include/Exclude Filter (UNIX Wildcard style) can be specified. It operates lightly because MFC is not used, and it makes it only from Win32 API. Because all source codes have been opened to the...

    RAMAN特性参数(一)exclude/skip readonly/只读表空间备份恢复

    RMAN EXCLUDE 2 RMAN EXCLUDE基础命令 2 RMAN EXCLUDE备份 3 RMAN EXCLUDE恢复 6 RMAN EXCLUDE总结 7 RMAN skip readonly 8 RMAN备份只读表空间 8 RMAN skip readonly 0级备份 8 RMAN skip readonly 恢复 10 只读表...

    rsync详解之exclude排除文件

    问题:如何避开同步指定的文件夹? –exclude rsync –exclude files and folders ...直接添加–exclude 即可 比如–exclude “proc” –exclude ‘sources’ Note: the directory path is relative to the folder yo

    dict_exclude:要排除正则表达式的 postgresql 字典

    概述dict_exclude 是一个 postgresql 扩展,它提供了一个字典,可用于基于正则表达式创建停用词。 在撰写本文时,它似乎是实现此目标的一个不错的解决方案,但它没有在文本搜索中使用停用词功能,从而有效地创建了一...

    Windows 复制拷贝增强工具 Fastcopy 3.89 + x64.zip

    /exclude=“…“指定Exclude过滤器 /overwrite_del 在删除文件之前,删掉方式时,重新取名给重复&,使复原无效(在/overwrite_del=FALSE抑制) /acl 拷贝存取支配清单(ACL)(只NTFS有效)(在/acl=FALSE抑制) /...

    css-exclude:允许使用注释排除 css

    css-exclude是一个后处理器,它允许您选择哪些选择器不属于您的最终样式表。 只需编写 css 注释即可。它是如何工作的? css-exclude是一个处理器,就像其他著名的模块,例如 autoprefixer 或 webpcss。 它支持 ...

    rsync命令排除文件和文件夹(exclude-from)

    假设最开始的命令是这样的 rsync -e ‘ssh -p 30000’ -avl –delete –stats –progress demo@123.45.67.890:/home/demo /backup/ 一、排除单独的文件夹和文件 要排除sources文件夹,我们可以添加 ‘–exclude’ ...

    test-exclude:使用glob测试路径的包含或排除

    用法const TestExclude = require ( 'test-exclude' ) ;const exclude = new TestExclude ( ) ;if ( exclude ( ) . shouldInstrument ( './foo.js' ) ) { // let's instrument this file for test coverage!}...

    copyfiles:在命令行上复制文件

    复制文件 轻松复制文件安装npm install copyfiles -g命令行 Usage: copyfiles [options] inFile [more files ...] outDirectory Options: -u, --up slice a path off the bottom of the paths [number] -a, --all ...

    mkdocs-exclude:一个mkdocs插件,可让您从输出中排除文件或树

    mkdocs-exclude是一个,可让您使用Unix样式的通配符(glob)或正则表达式(regexes)从输入中排除文件。 这实现了人们在某些mkdocs错误(例如和。 快速开始 使用pip安装模块: pip3 install mkdocs-exclude 在您的...

Global site tag (gtag.js) - Google Analytics