是否可以通过refid在ant中包含/排除文件列表?

时间:2010-03-04 20:55:03

标签: java ant

我们目前有一个ant任务,其中包含类似于以下内容的内容:

     <filelist dir="${css.dir}" id="ordered_css">
        <file name="interface/foo.css" />
        <file name="pages/monkey.css" />
        <file name="pages/ninja.css" />
        <file name="pages/sidebar.css" />
        <file name="pages/bar.css" />
        <file name="pages/baz.css" />
        <file name="pages/robot.css" />
     </filelist>

     <patternset id="exclude_css">
        <exclude name="interface/foo.css" />
        <exclude name="pages/monkey.css" />
        <exclude name="pages/ninja.css" />
        <exclude name="pages/sidebar.css" />
        <exclude name="pages/bar.css" />
        <exclude name="pages/baz.css" />
        <exclude name="pages/robot.css" />
     </patternset>

然后任务在这里引用模式集:

 <fileset dir="${css.dir}" id="stuff_css" includes="*/stuff/*.css">
    <patternset refid="exclude_css" />
 </fileset>

进一步说,它在这里引用了文件集:

<concat destfile="build/all.css" append="false" force="yes">
    <filelist refid="ordered_css" />
    <fileset refid="stuff_css" />
</concat>

有没有办法将两个文件列表合并为一个可以在两个地方引用的类型?到目前为止,我还没有找到办法,因为模式集包含排除。我希望能够简单地创建一个文件列表并包含或排除引用的列表。

1 个答案:

答案 0 :(得分:6)

如果您使用filelist filespatternset excludes属性,则property可以使用<property name="css_files" value="interface/foo.css pages/monkey.css pages/ninja.css pages/sidebar.css pages/bar.css pages/baz.css pages/robot.css"/> <filelist id="ordered_css" dir="${css.dir}" files="${css_files}"/> <patternset id="exclude_css" excludes="${css_files}"/>

{{1}}