`

可爱的Ant——利用Ant获取文件列表

阅读更多
        提到Ant,你一定会想到它在自动构建方面有着举足轻重的地位,于我而言,也仅仅是将其作为一个自动构建的工具来使用。由于各个流行的IDE都内部集成了对Ant的强大支持,因此,我使用Ant的方式就真的简单得不能再简单了:在网上找一个build file,然后针对自己的project稍作修改。这样,我就可以在IDE窗口中拖动鼠标点两下,就可以很方便地完成 project的构建了。真的太简便了,简便得让我忽略了Ant的其他强大功能。不过,是金子总会发光的。这两天,我切实地体会到了Ant不仅仅可以极好地完成自动构建的工作,而且它还是一个十分顺手的工具,极大地提高工作效率。
        事情的缘由是这样。Leader交给我了一项工作:在一个folder下面有很多以portlet结尾的文件,第一项任务就是要得到这些文件的列表;然后呢,在另外一个PageControlList. java文件中有一个Object[][]类型的变量,里面就应该装着这些文件的名字。第二项任务就是根据文件列表中的文件名在这个Object[][]变量中进行搜索,找出还有哪些文件名没有加入到这个变量中。 好了,工作任务就讲完了,是不是很简单呢?完全可以利用IDE的搜索功能一个一个去找的,不过这样做就真的是体力活了。如果Leader让我过一段时间在检查一遍,我不拿头撞墙才怪呢。看来是得找自动化一点的办法了。我一开始想到的就是自己写一段代码来搞定,但是面对着文件的操作就让人心烦。如果用Python的话,则无法利用那个PageControlList中的方法直接得到那个Object[][]的变量,又得自己写代码去找,真的划不来。正当我郁闷于无从下手的时候,我想起了Ant,想起了常用的build file中可以很简单地获得一个folder下面的文件,还可以轻松地对文件进行filter!好,就用它了。
        由于需要完成的工作比较特殊,使用Ant本身自带的task是没有办法完成的,需要写一个自定义的task。写自定义的task也是很简单的,只要extend Ant的Task类,改写execute方法即可。我把自定义的task的名字定为list,大致的代码轮廓如下:

public class List extends Task {
   
public void execute()  }    
}
 

而在相应的XML文件中,通过taskdef引用这个自定义task,就可以在target中使用了。

<property name="prjroot" location="D:/fantasysoft/project" />
<property name="src.dir" location="${prjroot}/src/java" />
<property name="classes.dir" location="${prjroot}\web\WEB-INF\classes" />
<property name="commonroot" location="${prjroot}/common/" />
    
<target name="declare">
    
<taskdef name="list" classname="anttask.List" classpath="${classes.dir}" />
</target>
<target name="Check" depends="declare">
   
<list>
      
   
</list>
</target>
 
定好了这个框架以后,就要考虑这个task需要什么样的参数了。由于是对文件的操作,FileSet(FileSet是Ant中定义的类型,实质是文件的集合)是必须的了,我们的check的target就会扩充成这样:

<target name="Check" depends="declare">
    
<list>
       
<fileset dir="${commonroot}" casesensitive="yes">
           
<include name="**/*Portlet.xml"/>
       
</fileset>
    
</list>      
</target> 

为了在List中获得fileset,我们就得在List中增加一个Vector类型的变量装fileset。

private Vector filesets = new Vector();    
public void addFileset(FileSet fileset) {
    filesets.add(fileset);
}

由于FileSet类型提供了很简便的方法获得文件列表,整个任务就变得十分简单了。 我们在execute方法中增加相应的处理代码:

public void execute() {
    String[] includedFiles 
= null;
    
for (Iterator iterator = filesets.iterator(); iterator.hasNext();) {
        FileSet fs 
= (FileSet) iterator.next();
        DirectoryScanner ds 
= fs.getDirectoryScanner(getProject());
        includedFiles 
= ds.getIncludedFiles();
    }
 
    
}

在以上代码中,includedFiles这个字符串数组里存放着我需要的文件列表。让我头痛的文件列表操作的问题就这样轻松解决了,接下来的比较工作就是小菜一碟了。
        感谢可爱的小蚂蚁,是它让我在无聊的工作中找到了一点点满足的乐趣。 :)
分享到:
评论

相关推荐

    ant自动获取文件路径

    NULL 博文链接:https://xnbhnly.iteye.com/blog/1109967

    jmeter+ant 持续集成build.xml文件

    jmeter+ant 持续集成build.xml文件,直接使用ant命令执行jmeter脚本文件,得到图形测试报告

    ant的配置文件ant的配置文件

    ant的配置文件ant的配置文件ant的配置文件ant的配置文件

    Antdesign sketch文件

    这是一套蚂蚁设计(Antdesign)组件的sketch文档,可用于设计和产品原型

    Ant Design Pro 下实现文件下载的实现代码

    主要介绍了Ant Design Pro 下实现文件下载的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    ant配置文件

    这是一个ANT自编译的程序,可以在myeclipse下创建ant文件,根据代码配置,下载后直接可以用。

    ANT文件详解 ant介绍 ANT 命令

    ANT文件详解 ant介绍 ANT 命令

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

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

    ant +build.xml 文件Jenkins部署javaEE项目

    ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml...

    Ant测试所需文件.zip

    本压缩文件解压后生成的解压文件夹即文件用于博客《Ant——使用Ant构建简单Java项目》的试验,博客参见网址:http://blog.csdn.net/gaohuanjie/article/details/40144821

    ant判断文件是否存在

    ant执行 target 前先判断文件是否存在,只有文件存在才执行。

    使用ant编译生成flex的swc文件

    直接使用flex的sdk生成swc文件,很繁琐,而且对于大项目来说,是个头痛的事情。ant在对java打包生成jar时,它优良的设计显露无疑,这里我们使用它,来生成swc,完成项目编译打包。

    ant ant ant ant

    ant ant ant antant ant ant antant ant ant ant

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

    该程序为Ant的扩展任务,在拷贝文本格式的文件的同时替换文件中的Ant表达式,类似于 ${property.name},属性值来自于Ant脚本加载的属性文件,如果没有属性文件中没有定义相关属性,那么保留原来的表达式;...

    ant的介绍pdf文件

    ant的介绍pdf文件 ant的介绍pdf文件 ant的介绍pdf文件

    开发工具 ant-1.9.6

    开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6...

    ANT-build-xml文件详解

    ANT-build-xml文件详解 ANT-build-xml文件详解 ANT-build-xml文件详解

    AntDesign蚂蚁金服APP移动端原型组件.rplib

    Ant Design 移动端设计规范,一个基于 Preact/React/React Native 的 UI 组件库,是 Ant Design 的移动规范的 React 实现,服务于蚂蚁及口碑无线业务。 image.png 特性 基于 Ant Design 移动设计规范。 规则化的...

    ant.jar下载

    org.apache.tools.ant.Main org.apache.tools.ant.Task org.apache.tools.bzip2.CRC org.apache.tools.ant.Target org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip.ZipLong ...

    Ant 配置文件详解

    Ant 配置文件详解 Ant 各种详细配置应有尽有!!!

Global site tag (gtag.js) - Google Analytics