- 浏览: 227101 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
thebye85:
引用 另外一个需要注意的问题,就是SessionMap和隐藏对 ...
WebWork深度探索之Session -
lanxiaoshuang:
写的真好
说的都是概念——有关编程范式 -
lhz:
grep unique wc你需要的只是这么几个小工具而已
努力做个Pragmatic Programmer
提到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,大致的代码轮廓如下:
而在相应的XML文件中,通过taskdef引用这个自定义task,就可以在target中使用了。
定好了这个框架以后,就要考虑这个task需要什么样的参数了。由于是对文件的操作,FileSet(FileSet是Ant中定义的类型,实质是文件的集合)是必须的了,我们的check的target就会扩充成这样:
为了在List中获得fileset,我们就得在List中增加一个Vector类型的变量装fileset。
由于FileSet类型提供了很简便的方法获得文件列表,整个任务就变得十分简单了。 我们在execute方法中增加相应的处理代码:
在以上代码中,includedFiles这个字符串数组里存放着我需要的文件列表。让我头痛的文件列表操作的问题就这样轻松解决了,接下来的比较工作就是小菜一碟了。
感谢可爱的小蚂蚁,是它让我在无聊的工作中找到了一点点满足的乐趣。 :)
事情的缘由是这样。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() { }
}
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>
<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 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);
}
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();
}
}
String[] includedFiles = null;
for (Iterator iterator = filesets.iterator(); iterator.hasNext();) {
FileSet fs = (FileSet) iterator.next();
DirectoryScanner ds = fs.getDirectoryScanner(getProject());
includedFiles = ds.getIncludedFiles();
}
}
在以上代码中,includedFiles这个字符串数组里存放着我需要的文件列表。让我头痛的文件列表操作的问题就这样轻松解决了,接下来的比较工作就是小菜一碟了。
感谢可爱的小蚂蚁,是它让我在无聊的工作中找到了一点点满足的乐趣。 :)
发表评论
-
在String的面前丢脸
2004-06-18 00:39 1264重返C++的世 ... -
Summary of function parameter
2004-07-14 02:33 1141对C++这位入 ... -
此Vector非彼Vector
2004-08-05 15:51 1046在学习STL的过程中,我发现了一个熟悉的面孔— ... -
模板——泛型和STL的基础
2004-08-07 01:01 1325所谓泛型,从字面上可以猜想,就是泛化的类型(型 ... -
让人头痛的Vector(提问篇)
2004-08-07 16:55 1228在写完了此Vector非彼Vector这篇随笔 ... -
我该怎样shuffle呢
2004-08-10 01:47 1179在STL的Algorithm中有着这样的一种算 ... -
WebWork初体验
2004-08-11 17:43 1290在这篇ASP.NET ... -
WebWork深度探索之盲人摸象
2004-08-12 23:54 1127昨天尝试着利用WebWork做了一个小功能[1 ... -
WebWork深度探索之号外
2004-08-14 09:03 1039昨天开始对WebWork进行了一些初步的探索[ ... -
WebWork深度探索之标签库
2004-08-15 00:28 1530由于WebWork本身提供了一套自定义的标签库 ... -
什么是Law of Demeter
2004-08-15 14:22 1231今天一如昨日,继续对WebWork进行小打小闹 ... -
所谓的Dumb Question
2004-08-15 17:16 1033为了能够更 ... -
WebWork深度探索之标签库(续)
2004-08-16 15:58 1128昨日对WebWork的标签库进行了小小的研究[ ... -
WebWork深入探索之初见端倪
2004-08-19 16:35 893使用WebWork进 ... -
建网站的小Tips
2004-08-20 23:58 1034这几天都在忙着做一个小网站,从网页美工到后台处 ... -
URL与RequestDispatcher
2004-08-21 23:58 1002今天照例继续自己的网站建设之旅,原本以为可以大 ... -
WebWork深度探索之Pitfall
2004-08-25 14:31 957在使用WebWork进行开发的过程中,她的种种 ... -
WebWork深度探索之Session
2004-08-26 15:38 1523昨天上午刚 ... -
搞笑的textarea标签
2004-08-31 18:17 1582很久没有用 ... -
两天四疑问
2004-09-03 10:56 9939月份的前两天,我仍然做着网站开发的工作。在开 ...
相关推荐
标题“ant自动获取文件路径”涉及的是Apache Ant这一构建自动化工具在处理文件路径时的技巧。Apache Ant是一个基于Java的构建工具,它被广泛用于Java项目中,类似于Unix的make,但依赖于XML来描述构建过程。在Ant中...
标题“ant配置文件”指的是Ant项目中的核心文件——build.xml。这个文件是Ant构建过程的蓝图,包含了所有构建任务和它们的依赖关系。它定义了如何编译源代码、打包应用、执行测试以及部署项目。在myEclipse这样的...
jmeter+ant 持续集成build.xml文件,直接使用ant命令执行jmeter脚本文件,得到图形测试报告
总之,“ant执行sql文件”是Java开发中一个实用的技巧,它利用Ant的构建能力结合SQL脚本来管理和维护数据库状态。通过学习和掌握这一技能,开发者可以提高工作效率,简化数据库管理,并实现更高效的应用程序部署。
在Ant Design Pro框架下实现文件下载功能,是前端开发者在开发过程中常遇到的需求。本文将详细介绍如何在Ant Design Pro中实现文件下载功能,涉及到的关键知识点包括如何使用Ajax发送请求,如何处理响应数据,以及...
"生成ANT所需要的Build.xml文件"这一主题,核心在于如何通过Python程序自动生成ANT的配置文件——build.xml。 首先,我们要理解ANT的build.xml文件。它是ANT的核心,包含了一系列的构建目标和任务。这些目标定义了...
在提供的文件列表中,`build.bat`是一个批处理文件,可能用于启动Ant构建过程;`compc.properties`可能包含了compc编译器的配置属性;`compc.xml`是Ant的构建脚本,定义了如何调用compc以及编译的参数和目标;`说明....
**Ant入门教程——使用Ant自动生成JAR文件** Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程。它是Java开发中的一个重要工具,尤其在自动化构建、编译、测试和部署应用程序时。本教程将带你深入了解Ant...
至于压缩包子文件的文件名称列表,只有一个`build.xml`,这通常意味着这是一个简单的项目,其构建过程完全由这个XML文件定义。可能的结构是直接在`build.xml`中包含了所有的构建逻辑,没有将配置分离到其他辅助文件...
Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金...通过解压缩此ZIP文件并配置环境变量,用户可以利用Ant执行各种项目构建任务。详细的使用方法和特性可通过提供的readme.txt文件进行查阅。
本主题聚焦于如何利用Ant与XMLTask jar包来获取SVN(Subversion)版本信息。下面将详细介绍这个过程以及相关知识点。 首先,了解Ant。Ant是一个基于Java的构建工具,它提供了跨平台的构建脚本能力,能够执行编译、...
### ANT文件详解:深入理解ANT及其在项目构建中的应用 #### Ant的概念与起源 Ant,全称为Apache Ant,是一款开源的、跨平台的项目构建工具,最初由James Duncan Davidson开发,现归属于Apache软件基金会Jakarta...
用户可能在博客中详细描述了如何使用Ant来处理这样一个混合项目的构建流程,包括如何配置Ant文件,如何处理不同语言的编译步骤,以及如何利用Ant的特性来简化整个流程。遗憾的是,没有具体的博客内容,我们只能推测...
Apache Ant 是一个广泛使用的Java构建工具,它遵循XML格式的构建文件来定义任务,使得构建过程可配置且可重复执行。这个"apache-ant-1.7.0.rar"是Apache Ant 1.7.0版本的安装文件,大小刚好小于10MB,适合在各种环境...
在Ant 1.6.5中,开发者可以利用这个版本提供的丰富任务来实现各种复杂的构建流程。例如,`<javac>`任务用于编译Java源代码,`<jar>`任务则用于创建JAR文件,这正是我们在压缩包中看到的`ant-1.6.5.jar`文件。 `ant-...
《Ant——Java开发中的构建工具》 Ant是Java开发领域中的一款强大且广泛应用的构建工具,它由Apache软件基金会开发并维护。Ant以其XML为基础的构建文件(build.xml)著称,该文件定义了项目的构建过程,包括编译、...
"Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...
这是一套蚂蚁设计(Antdesign)组件的sketch文档,可用于设计和产品原型
Ant以其XML为基础的构建文件(build.xml)而著名,这种文件定义了构建过程中的任务序列,使得开发人员能够自动化编译、打包、测试和部署应用程序。 标题"apache-ant-1.9.16-bin.zip"表明这是Apache Ant的一个特定...
在压缩包子文件的文件名称列表中,我们只看到"ant_1.2.6.zip",这通常意味着ZIP文件中包含的是完整的Ant 1.2.6发行版。解压这个文件,你可能会找到以下内容: 1. `bin`目录:包含可执行脚本(如`ant`和`ant.bat`)...