有没有办法强制javac任务只调用批注处理,而不进行编译。根据javac documentation的说法,-proc:only javac option应该可以强制执行这样的行为。
但以下是ant构建文件的片段:
<target name="apt">
<javac srcdir="src" destdir="bin" includeantruntime="false">
<compilerarg value="-proc:only"/>
</javac>
</target>无论如何都要编译项目。我尝试了其他的<compilerarg>标签版本(例如line而不是value),但是没有任何帮助。
发布于 2014-06-13 08:27:03
避免指定任务的"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>第二种方法稍微复杂一些,但是更干净一些。通常,您的项目将有一个输出目录,您可以在其中放置已编译的类和打包的jars,因此在其中添加一个额外的空目录不会有什么坏处。从Ant版本1.9.4开始,我还没有找到任何其他独立于编译从Ant进行批注处理的方法,尽管"javac“任务中的一个简单的"force”属性就可以解决这个问题。
https://stackoverflow.com/questions/11858444
复制相似问题