关于ant中include与exclude一点小经验

10月 15th, 2008 ychen Posted in 未分类 |

今天在写project的build脚本,印度人的要求很变态,一般我们编译的话都是一个src目录下面都编译成一个jar包的,通常情况下,他的要求是将src下面的几个class打成一个jar,另外一些再打一个jar,也就是说src下面要抽出几个class来编译。

下午大概花了2个小时来找解决方法,主要是以前没碰到过这种情况,其实是ant的一些小细节,写出来共享:

javac中一般源代码的目录的属性是srcdir=“src”,通常我们是这样写的,在以上这个情况下我们就不能这么用了,就要写成:

<javac destdir="">

<src path="src">

<include name="com/XXX/*">

…..

</src>

</javac>

这里还有一个知识点,关于include跟exclude的。如果一个fileset下面写了include这个属性的话,比如fileset的基目录是src,那这个fileset的范围就是下面include的范围,如果不写include这个属性的话,那这个默认的范围就是src下面所有的文件很子目录下的所有文件。exclude就比较好理解了,就是在上面情况下的集合里面不包含那些文件。

还有就是*的用法,dir1/*这个表示dir1下面的所有文件,不包括子目录,dir1/**表示dir1下面包括子目录的所有文件。

所以,如果我们要在比如如下的一个目录结构里面选出几个目录下的所有文件来编译的话,这个fileset应该这么写:

src下面有并列的src/dir1跟src/dir2。那么单单包括dir1下面的所有文件怎么写呢?

<fileset path="src">

<include name="dir1/*">

</fileset>

Leave a Reply