【问题标题】:How to configure the Annotation Processing API without external Jar using Maven?如何使用 Maven 在没有外部 Jar 的情况下配置注释处理 API?
【发布时间】:2012-02-03 12:26:32
【问题描述】:

我想在我的项目中使用自定义注释。

如何配置 ma​​ven 3 来处理我的注释。 AbstractProcessor 类的注释和实现嵌入在我的应用程序中。

我的注解只能用于测试(src/test/java)。

状态注释:

@Target(ElementType.METHOD)
public @interface State {
  boolean success() default true;
}

TestAnnotationsProcessor:

@SupportedAnnotationTypes("com.*****.client.State")
public class TestAnnotationsProcessor extends AbstractProcessor {

  @Override
  public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    System.out.print("TESSST ANNOTATION");
    return true;
  }
}

我不想将我的注释放在外部项目中......这会很愚蠢,因为它真的是我项目的依赖项。

我该怎么做?谢谢。

【问题讨论】:

  • 有什么问题? maven 在编译期间是否忽略了注释?还是您遇到类似于stackoverflow.com/questions/2335655/… 的问题
  • 什么也没发生,我想在我的控制台中看到:“TESSST ANNOTATION”,但什么也没显示。
  • @SandroMunda 我有同样的问题。我遵循了本教程:deors.wordpress.com/2011/10/08/annotation-processors,我需要跳过将 annotations.processors 项目导出到 .jar 并为其设置“工厂路径”的步骤。有没有办法让注释处理器在每次更改后不导出到 .jar 的情况下工作?我想让 Maven 任务在编译期间执行此操作。这可能吗?

标签: java maven annotations


【解决方案1】:

你能做类似的事情吗(如果语法有点不对,请原谅,我手边没有我的 IDE):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin<artifactId>
  <version>2.3.2</version>
  <executions>
    <execution>
      <goals>
        <goal>testCompile</goal>
      </goals>
      <phase>test-compile</phase>
      <configuration>
        <annotationProcessors>com.******.TestAnnotationsProcessor</annotationProcessors>
        <proc>only</proc>
      </configuration>
    </execution>
  </executions>
</plugin>

【讨论】:

  • 你如何在 Gradle 中做到这一点?
  • 这适用于其他版本的 maven-compiler-plugin 吗?因为我已经用 3.3 试过了,注释处理器不起作用。它仅在我将导出的 .jar 文件包含在以下位置时才有效:项目属性 -> Java 编译器 -> 注释处理 -> 工厂路径 -> 添加罐子。有没有其他方法可以自动执行此操作,而无需在每次更改后将处理器导出到 .jar?
  • @DominikStyp 听起来您正试图从 Eclipse 或其他 IDE 运行注释处理?这些说明仅适用于 Maven。让 Eclipse 自动理解这样的注释是我运气不佳的事情,也不是因为缺乏尝试。
  • @Pace 是的,完全正确。我似乎 Eclipse 没有合适的工具来解决这个问题。我设法做的是使用 maven-assembly-plugin 和我自己的程序集描述符自动生成 JAR 文件,它会在打包阶段生成正确的 JAR。
猜你喜欢
  • 2018-07-29
  • 2020-08-19
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多