`
271788203
  • 浏览: 490075 次
  • 性别: 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就行了。

分享到:
评论

相关推荐

    Ant入门-ant入门pdf

    4. **基本任务使用**:讲解如`javac`(编译Java源码)、`copy`(复制文件)和`jar`(创建JAR文件)等常用任务的使用。 5. **条件与选择**:介绍如何根据条件执行特定任务,如`if`、`unless`标签,以及`&lt;available&gt;`...

    ant培训 经典教程

    2. **任务(Tasks)**:Ant通过任务来执行实际的工作,如`javac`用于编译Java源码,`jar`用于打包成JAR文件,`copy`用于复制文件,`delete`用于删除文件或目录等。学习如何配置这些任务以满足不同需求。 3. **属性...

    apache-ant-1.9.4-bin.tar.gz (适用于LINUX系统)

    7. **条件语句与选择器**:Ant支持条件语句,如`&lt;if&gt;`和`&lt;unless&gt;`,以及文件选择器,如`&lt;include&gt;`和`&lt;exclude&gt;`,它们可以根据特定条件决定是否执行某任务或包含特定文件。 8. **依赖管理**:Ant可以管理项目依赖...

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

    &lt;exclude name="**\build.xml"/&gt; &lt;/copy&gt; ``` 这段代码定义了一个简单的构建脚本,其中包含两个目标(target):`create_dir` 和 `upload`。`create_dir` 目标用于创建目标目录,而 `upload` 标签则依赖于 `...

    Ant 脚本详解

    它们通过`include`和`exclude`标签来指定包含和排除的文件模式。 ### 类路径和类加载器 Ant允许通过`classpath`元素来指定运行时所需的类路径。此外,`classpathref`可以引用预先定义的类路径。 ### 自定义任务 ...

    ant使用手册ANT使用指南

    &lt;exclude name="**/test/**"/&gt; ``` ##### 6.3 自定义任务 可以通过编写Java类来扩展Ant的功能,实现更复杂的构建逻辑。 ```java public class HelloWorldTask extends Task { public void execute() throws ...

    Ant常见属性解析--target

    Ant还支持条件语句(如`&lt;if&gt;`、`&lt;unless&gt;`)和选择器(如`&lt;include&gt;`、`&lt;exclude&gt;`),这使得我们可以根据不同的条件执行不同的任务,或者选择性地处理文件。此外,Ant提供了`&lt;antcall&gt;`任务,可以调用脚本中的其他...

    Ant的配置及使用实例

    - **文件集元素**(`&lt;fileset&gt;`):用于指定要操作的一组文件,可以结合`&lt;include&gt;`和`&lt;exclude&gt;`元素来过滤文件。 #### 三、示例分析 下面对给定的XML构建文件进行详细解析: 1. **基础结构**: ```xml ...

    使用ant打war包

    &lt;exclude name="**/*.jar"/&gt; ``` - `compile`目标依赖于`clean`目标,确保先进行清理操作。 - 使用`&lt;javac&gt;`元素编译源代码,并设置输出目录为`${classes}`。 - `&lt;copy&gt;`元素将源代码目录下的非`.jar`文件复制到...

    ant使用实例(TXT )

    &lt;exclude name="** &lt;/copy&gt; ``` **解析:** - **XML声明**:指定XML版本为1.0。 - **项目定义**:名称为`test`,默认目标为`upload`。 - **属性设置**:定义了两个属性`dest_drive`与`dest_dir`,用于指定...

    Java Ant build详解

    4. **task** 元素:Ant的核心在于任务,它们执行实际的工作,如`javac`用于编译Java源代码,`jar`用于创建JAR文件,`copy`用于复制文件,`delete`用于删除文件等。每个任务都有特定的属性和子元素。 5. **classpath...

    ANT使用指南.PDF

    - **文件操作**:Ant 提供了丰富的文件操作任务,如 `&lt;copy&gt;`、`&lt;delete&gt;` 等,便于管理项目资源。 - **模式匹配**:通过 `&lt;patternset&gt;` 和 `&lt;fileset&gt;` 等元素,可以方便地过滤文件列表,进行复杂的文件操作。 ...

    ant特詳細例子

    根据提供的文件信息,我们可以深入探讨 Apache Ant 的使用方法与配置细节。Apache Ant 是一个 Java 库和命令行工具,其主要用途是驱动构建过程。它使用 XML 来定义构建过程,能够实现自动化编译、测试、部署等操作,...

    ant使用指南

    Ant提供了丰富的文件系统操作和模式匹配功能,如`&lt;copy&gt;`, `&lt;delete&gt;`, `&lt;move&gt;`等任务,允许开发者在构建过程中进行文件的复制、删除和移动。同时,`&lt;patternset&gt;`元素结合`&lt;include&gt;`和`&lt;exclude&gt;`可以灵活地控制...

    ant 元素介绍XXOO

    Ant内建了许多任务,例如`javac`用于编译Java源代码,`copy`用于复制文件或目录。上面的`&lt;javac&gt;`就是一个任务元素,它指定了源代码目录`srcdir`和编译结果目录`destdir`。 **4. `&lt;property&gt;`元素** 此元素用于...

    使用ANT打包J2EE程序

    ### 使用ANT打包J2EE程序 #### 概述 在Java世界中,特别是对于J2EE应用程序来说,构建过程往往需要高度自动化与可重复性。Apache Ant作为一种强大的、基于XML的构建工具,提供了灵活的方式来自动执行软件构建流程...

    Ant配置实例

    ### Ant配置实例详解 #### 一、概述 Apache Ant 是一个用于自动化构建过程的Java库与命令行工具,主要用于编译、测试、部署等任务。本文档将详细解析一个具体的Ant构建脚本(`build.xml`),帮助读者理解如何通过Ant...

Global site tag (gtag.js) - Google Analytics