Ant:带有 proc 的 javac:仅来自 Ant?

标签 ant javac annotation-processing

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

但是下面的 ant 构建文件片段:

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

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

最佳答案

避免指定任务的“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”属性可以解决这个问题。

关于Ant:带有 proc 的 javac:仅来自 Ant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858444/

相关文章:

ant - 使用 ant-contrib 使用 cpptasks 编译 C 程序

java - Ant 在执行时随机挂起

android - 使用 ant 构建时验证错误,从 Eclipse 构建时正常

intellij-idea - 使用 Gradle idea 插件将 Jpa Metamodel 生成的文件添加到 Intellij Idea 源

java - 注释处理工具 <- 检查有效注释

java - SBT增量编译对于java和scala可靠吗?

java - AppBundler 未正确捆绑 JRE 8 预览版

java - 编译器警告对 Web 应用程序性能有影响吗

java - java编译器是JVM的一部分吗?

java - 在eclipse中自动构建期间生成代码?