当前位置: 首页 > 知识库问答 >
问题:

如何用Ant编译注释处理器?

弘思聪
2023-03-14
    null

代码(步骤1和2):

<target name="compileAnnotationProcessor">        
    <javac destdir="${OUTPUT_DIR}"
           debug="true"
           failonerror="true"
           includeantruntime="false"
           classpath="${java.class.path}">
        <src>
            <pathelement path="${PROJECT_DIR}/tools/src"/>
        </src>

        <include name="/path/to/annotation/processor/package/**"/>
    </javac>
</target>

<target name="generateFilesWithAPT" depends="compileAnnotationProcessor">
    <javac destdir="${OUTPUT_DIR}"
           includeantruntime="false"
           listfiles="false"
           fork="true"
           debug="true"
           verbose="true">
        <src>
            <pathelement path="${PROJECT_DIR}/common/src/"/>
        </src>
        <include name="/path/to/files/to/compile/**"/>
        <classpath>
            <pathelement path="${OUTPUT_DIR}"/>
            <pathelement path="${java.class.path}"/>
        </classpath>

        <compilerarg line="-proc:only"/>
        <compilerarg line="-processorpath ${OUTPUT_DIR}/path/to/annotation/processor/package/annProcessorImplement"/>
    </javac>
</target>

实际上,第一个任务执行良好,并为注释处理器实现编译.class文件。它在第二个任务停止。

Ant说:请求不编译的注释处理,但未找到处理器。

  • Java 1.6
  • Ant 1.8.2

共有1个答案

孙辰阳
2023-03-14

我通常的做法是:

  • 将批注与批注处理器一起打包在自己的JAR中
  • 通过该JAR中的Meta-INF/Services注册注释处理器

那么只要你对注解有依赖关系,注解处理器就会被自动拾取,而不需要任何额外的配置。

 类似资料:
  • 问题内容: 我可能只是看错了方向,但我发现有关批注处理的JSE文档非常稀疏。我想编写一个注释处理器,该处理器处理带注释的String字段和局部变量,以计算的String表达式替换它们。这应该不会太复杂,但是我对于Javax.annotation.processing的Javadoc却迷失了。 编辑:我需要在编译时处理批注,因为我想修改生成的代码。它应将带注释的常量String表达式替换为计算的St

  • 问题内容: 我有一个自定义注释,它是Processor&ProcessorFactory。如何配置Ant构建文件,使得: 注释处理器应用于带注释的类,并在“ gen”文件夹内生成源文件 生成的源文件(通过注释处理)可以被项目中的其他源文件使用。 问题答案: 这不漂亮,但这是我要做的。(来源javac ant任务 javac手册页)使用compilerarg属性,我可以传入javac ant任务未直

  • 我正在尝试创建一个自定义注释,例如,确保字段或方法既是又是,如果字段或方法既不是又不是,则会生成编译时错误,如以下示例所示: 到目前为止,我已经完成了两个自定义注释接口: 和: 正如所暗示的,我不知道如何生成编译时错误。Processor的文档清楚地表明我不应该抛出异常, 如果处理器抛出未捕获的异常,该工具可能会停止其他活动注释处理器。 它接着描述了当提出错误条件时会发生什么,现在是如何提出错误条

  • 问题内容: 我正在尝试创建一个自定义批注,例如,以确保字段或方法为and ,并且如果该字段或​​方法不为and ,则将生成编译时错误,如以下示例所示: 到目前为止,我已经完成了两个自定义注释接口: 和: 如所示,我不知道如何生成编译时错误。Processor 的文档清楚地表明,我不应该抛出异常, 如果处理器抛出未捕获的异常,则该工具可能会停止其他活动的注释处理器。 它继续描述了引发错误条件时会发生

  • 问题内容: 我有一个注释处理器,用于保留策略= SOURCE的注释。 我不知道如何逐步调试它。 运行mvn install,编译或打包或ant javac时,我已发布了打印语句,记录器信息,并且在编译日志中看到了它们的sysout。 但是,我不知道如何在Eclipse中逐步调试处理器。我的意思是,您如何逐步调试编译时? 问题答案: 您必须使用调试配置从Eclipse调用Java编译器(您需要从“调

  • 问题内容: Android编译器如何工作?是否在编译时删除Java代码和Android XML文件中的注释? 问题答案: 将Java文件中的注释编译为类文件后,它们将被删除或忽略。类文件不是供人阅读的- 它们经过优化可以在虚拟机上高效运行。如果保留注释,它们只会导致类文件大于所需的大小,并且没有任何额外的好处(即,编译器和虚拟机不理解注释,因此为什么要包含它们) 对于XML文件,通常会保留注释。编