【问题标题】:Delete fileset filenames, but in different directory删除文件集文件名,但在不同的目录中
【发布时间】:2013-01-11 20:06:55
【问题描述】:

所以我有一个文件集,其中包含一个目录中的文件:

<fileset id="modules" dir="${modules.dir}">
    <include name="core*.jar"/>
    <include name="fileset*.jar"/>
    <include name="upgrader*.jar"/>
    <include name="hello*.jar"/>
</fileset>

但是,这些文件被复制到 ${lib.dir} 中,即 ${lib.dir} 包含 core*.jar、fileset*.jar 等的副本。 如何删除这些复制的文件?


另外,请注意我不能使用像 ant-contrib 这样的外部库。

【问题讨论】:

    标签: ant directory fileset


    【解决方案1】:

    使用 PatternSet 来定义名称集。然后在任意数量的 FileSet 中引用该 PatternSet。

    <patternset id="module.patterns">
        <include name="core*.jar"/>
        <include name="fileset*.jar"/>
        <include name="upgrader*.jar"/>
        <include name="hello*.jar"/>
    </patternset>
    
    <fileset id="modules" dir="${modules.dir}" >
      <patternset refid="module.patterns"/>
    </fileset>
    

    更新:

    鉴于您只需要原始文件的评论,试试这个:

    <pathconvert pathsep="," property="flattened.modules" refid="modules">
        <mapper type="flatten" />
    </pathconvert>
    
    <filelist id="libmodules" dir="${lib.dir}" files="${flattened.modules}"/> 
    

    【讨论】:

    • 假设下一步是在 ${lib.dir} 中创建一个与 module.patterns 模式集匹配的文件集,这不起作用。这是因为我的 ${lib.dir} 包含 ${modules.dir} 中不存在的其他 core*.jar 文件(并且没有被复制),我也不想删除这些文件。
    • 这个答案也可能有帮助:stackoverflow.com/questions/13290555/…
    猜你喜欢
    • 2014-04-27
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多