【问题标题】:Problems with FileSet in Ant script?Ant 脚本中的 FileSet 问题?
【发布时间】:2010-05-07 04:54:49
【问题描述】:

我正在使用 Ant 脚本来生成 javadoc,而我只需要 Ant 来根据某种模式查找一些类,所以我写道:

<javadoc access="public" source="1.6" sourcepath="src" destdir="dest" >

<fileset dir="src" casesensitive="yes" defaultexcludes="yes">
        <filename name="**/ABC*.java"/>
</fileset>

</javadoc>                       

这意味着我只希望 Ant 查找仅以“ABC”开头的源文件并为这些文件生成 javadoc。但是,每个以“ABC”开头的文件的结果都是重复的。

我是不是做错了什么?

谢谢

【问题讨论】:

    标签: ant fileset


    【解决方案1】:

    问题来自于同时使用sourcepath 属性和嵌套的fileset 标记。如果你废弃了sourcepath 而只拥有fileset,你应该没问题。即,而不是

    <javadoc access="public" source="1.6" sourcepath="src" destdir="dest" >
    <fileset dir="src" casesensitive="yes" defaultexcludes="yes">
        <filename name="**/ABC*.java"/>
    </fileset>
    </javadoc>
    

    只是做:

    <javadoc access="public" source="1.6" destdir="dest" >
    <fileset dir="src" casesensitive="yes" defaultexcludes="yes">
        <filename name="**/ABC*.java"/>
    </fileset>
    </javadoc>   
    

    【讨论】:

      【解决方案2】:

      您不能在 javadoc 任务中使用复杂的文件模式。

      Ant Javadoc 类的 javadoc 提到这是一个限制:

      ==开始引用===

      目前已知的限制是:

      • 模式必须是“xxx.*”的形式,其他所有模式都不起作用。

      • ...

      ==结束引用===

      【讨论】:

        【解决方案3】:

        您可以尝试在文件集中使用嵌套的include,而不是filename 之类的

        <include name="**/ABC*"/>
        

        或者使用javadoc标签中的packagenames属性作为

         <javadoc packagenames="*.abc*"
        

        【讨论】:

        • 感谢您的回复,我已经尝试过,但结果和我之前的一样。它不适用于
        • 在代码库中的 2 个不同的包中是否存在相同的文件 "*/ABC.java?
        • 不,不是。只有文件。例如,我有 ABC_E1.java, ABC_E2.java,结果是 ABC_E1.java,ABC_E1.java,ABC_E2.java,ABC_E2.java;甚至还显示所有不以“ABC”开头的文件。如果我不使用 (或类似的东西),那么结果不是重复的,但它还有其他不以“ABC”开头的文件(我不要)
        • 我自己尝试过,但无法正常工作。看起来 javadoc 不支持嵌套的 FileSet/Include 模式
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-10
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多