使用ant列出所有文件和子目录

时间:2012-05-10 05:32:11

标签: ant

我正在尝试使用rpm创建一个ant task包,因为我需要创建specfile,其中包含以下格式的所有文件名

%attr(0755, root, root) %dir dir1
%attr(0755, root, root) %dir dir1/dir2
%attr(0755, root, root) %dir dir1/dir2/dir3

%attr(0500, root, root) dir1/file1
%attr(0500, root, root) dir1/dir2/file1

我在构建过程中创建了这样的目录结构,但使用ant我无法列出所有文件和目录,然后我可以将其写入specfile

以下是我试图列出的文件,但它没有区分文件和目录,而且我需要一些方法来迭代列表。

<fileset id="dist.contents" dir="${nativePackageDir}" includes="**"/>                                     |        
        <property name="prop.dist.contents" refid="dist.contents"/>                                               |  <target name="javaobject-library" depends="props">                                                             
        <echo>${prop.dist.contents}</echo>   

2 个答案:

答案 0 :(得分:28)

<dirset id="dist.contents" dir="${nativePackageDir}" includes="*"/> 
<property name="prop.dist.contents" refid="dist.contents"/>
<echo>${prop.dist.contents}</echo>

使用 dirset 代替 fileset 可以解决您的问题。

答案 1 :(得分:2)

您只需要write in java一个ant任务实现,您将作为参数提供输入目录和您要编写的specfile的路径。

我发现在java中使用可重用的ant任务更好,更易于管理,而不是拥有巨大的ant xml文件。