3

有没有办法强制javac任务只调用注释处理,而不进行编译。-proc:only根据javac 文档,javac 选项应该强制执行此类行为。

但是下面的 ant buildfile 片段:

<target name="apt">
    <javac srcdir="src" destdir="bin" includeantruntime="false">
        <compilerarg value="-proc:only"/>
    </javac>
</target>

无论如何编译项目。我尝试了其他<compilerarg>标签版本(例如line,而不是value),但没有任何帮助。

4

1 回答 1

2

避免指定任务的“destdir”属性,或使用空目录作为类文件的目标。Ant“javac”任务然后将在基目录(如果未设置“destdir”)或空目录中查找类文件。因为它不会在那里找到类文件,所以它不会从编译中排除可能是最新的源代码,并对来自“srcdir”属性中指定的目录的源代码执行“javac”。

因此,您的代码将如下所示:

<target name="apt">
    <javac srcdir="src" includeantruntime="false">
        <compilerarg value="-proc:only" />
    </javac>
</target>

或者,如果您使用空目录方法,如下所示:

<target name="apt">
    <mkdir dir="empty" />
    <javac srcdir="src" destdir="empty" includeantruntime="false">
        <compilerarg value="-proc:only" />
    </javac>
</target>

第二种方法稍微复杂一些,但更干净一些。通常,您的项目将有一个输出目录,您可以在其中放置已编译的类和打包的 jar,因此在其中添加一个额外的空目录不会造成伤害。从 Ant 版本 1.9.4 开始,我没有找到任何其他方法可以独立于编译从 Ant 进行注释处理,即使“javac”任务中的简单“force”属性可以解决这个问题。

于 2014-06-13T00:27:02.870 回答