`
- 浏览:
56920 次
- 性别:
- 来自:
上海
-
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就行了。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### ant实用实例 详细解析ant的用法 #### 一、Ant简介与基本概念 Apache Ant 是一个Java环境下的开源项目构建工具,主要用于自动化构建、部署等任务。它使用XML来描述构建过程,并且提供了丰富的任务(task)集合,...
本教程旨在提供Ant的基本使用方法,适合初学者学习。 #### 二、Ant的基础知识 ##### 2.1 什么是Ant? Apache Ant是一个基于Java的构建工具,其名称源自“Another Neat Tool”(另一个整洁的工具)的首字母缩写。...
解压后,你可以查看其中的文件,了解具体配置和使用方法。通过运行Ant任务,你将能实际运行测试并生成覆盖率报告。 总结,集成JUnit和JaCoCo到Ant项目中,可以有效地进行自动化测试并获取代码覆盖率报告,这对于...
注: FileSet的setIncludes, 和setExcludes方法输入pattern, pattern是一个使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目录,“*.*”代表说有文件, “*.java”代表所有扩展名为java的文件。...
Ant 使用详细介绍 Ant 是什么? Ant 是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简易的方式来构建整个项目。Ant 究竟能做什么呢?这取决于 Ant 的任务(Task),Ant 有...
<fileset dir="src/test"> **/*Test.java"/> </fileset> ``` 这段代码会在`src/test`目录下查找所有以"Test"结尾的Java类,并运行其中的测试方法。测试结果会被写入到`test-reports`目录下的文件中。 此外...
当需要处理多个文件时,可以使用`FileSet`类来指定一组文件,这样就可以更加灵活地控制文件操作: ```java import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Copy; import org.apache....
在这种场景下,Apache Ant工具提供了一种高效且灵活的方法。Ant是一个基于XML的构建工具,它允许开发者通过简单的配置文件来定义构建过程,包括编译、测试、打包等任务。下面我们将详细探讨如何使用Ant来实现Java...
《Ant入门》是一本专为初学者设计的电子书,主要涵盖了Apache Ant这一构建工具的基础知识和使用方法。Ant是Java开发中广泛使用的自动化构建工具,由Apache软件基金会开发,其设计目标是简化项目构建过程,使开发者...
<fileset dir="." includes="**/*" excludes="**/.svn/**"/> ``` - **删除当前目录下所有的svn相关文件**: ```xml <fileset dir="." includes="**/.svn/**"/> ``` - **删除文件目录树**: ```xml ``...
在`compress`方法中,我们使用`FileSet`来指定要压缩的源文件或目录,然后通过`ZipOutputStream`创建ZIP文件。在遍历每个文件时,我们读取文件内容并将其写入ZIP流。`unzip`方法则通过`ZipInputStream`逐个处理ZIP...
4. 针对不同的需求,选择合适的编码转换方法,如使用Java I/O类或自定义Ant任务。 在实际开发中,根据项目的具体需求,可能还需要处理更多复杂情况,例如递归处理子目录、跳过已经正确编码的文件等。熟练掌握这些...
<fileset dir="dist"/> ``` 在这个例子中,`init`目标创建了必要的目录,`compile`目标编译源代码,`doc`目标生成Java文档,而`deploy`目标则负责打包JAR文件并上传至FTP服务器。`depends`属性指定了目标间的...
本电子书PDF详细介绍了Ant的使用方法,帮助开发者更好地理解和应用这一工具。 **一、Ant简介** Ant是基于Java的构建工具,它的设计目标是简化Java项目的构建过程,提供一种可配置、可扩展的方式来编译、打包和测试...
《Ant应用开发指南》是IT领域中针对Ant构建工具的一份详尽的教程与资源,旨在帮助开发者深入了解并掌握Ant的使用方法与实践技巧。Ant,最初作为一个缩写代表“Another Neat Tool”,是一个功能强大的构建工具,尤其...
定义路径时,可以使用通配符和文件集(fileset),这对于管理文件和目录非常有帮助。在定义任务时,可以利用Ant提供的大量内置功能,如拷贝文件、压缩解压缩、生成文档等,也可以扩展自定义任务以满足特殊需求。 在...
### 使用Ant构建WAR包详解 在Java开发领域中,Ant是一种非常流行的自动化构建工具,它可以帮助开发者自动完成项目构建...通过本文的学习,相信你已经掌握了使用Ant构建WAR包的基本方法,可以在实际项目中灵活运用。
5. **文件集(FileSet)**:Ant提供了对文件和目录操作的支持,文件集(FileSet)是其中的一种,它可以指定一组文件,常用于拷贝、删除等操作。文件集通过`DirSet`和`FileList`等类实现。 6. **任务链...