我正在尝试使用ant task
创建一个rpm
包,为此我需要创建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>
<dirset id="dist.contents" dir="${nativePackageDir}" includes="*"/>
<property name="prop.dist.contents" refid="dist.contents"/>
<echo>${prop.dist.contents}</echo>
使用目录集而不是文件集应该可以解决您的问题。
你只需要在java中编写一个ant任务实现,你将向它提供输入目录和你想要写入的specfile的路径作为参数。
我发现在 java 中拥有可重用的 ant 任务比拥有巨大的 ant xml 文件更好、更易于管理。