Java编译器注释处理器选项未正确传递

时间:2019-04-18 03:22:35

标签: java maven annotation-processor

我正在编写一个Java注释处理器,以从代码主体中的注释中收集元数据。我希望输出文件以maven项目版本开头。看着javac documentation for Oracle java 8,看来我应该能够使用符号-A key=value将项目版本作为选项传递给注释处理器。因此,我将maven-compiler-plugin配置为将core.versionId选项设置为项目版本,如下所示:

<configuration>
  <compilerArgs>
    <arg>-A core.versionId=${project.version}</arg>
  </compilerArgs>
</configuration>

但是,当我编译时,出现以下错误:

Fatal error compiling: key in annotation processor option '-A core.versionId=1.7.0-SNAPSHOT' is not a dot-separated sequence of identifiers

似乎正确插入了project.version,但是编译器无法按广告宣传处理-A选项。我必须丢失某些东西,但是我看不到它是什么,而且找不到这个问题。任何帮助表示赞赏。

更新:如果我删除空格,该错误将消失,从而使arg为    -Acore.versionId=${project.version}, 但是在这种情况下,core.versionId选项不会显示在注释处理器中。

1 个答案:

答案 0 :(得分:0)

事实证明,原始问题中忽略了关键信息。被编译的模块还需要与AspectJ编织在一起,这将重新运行编译器。注释处理器确实在编译步骤中运行并产生其正确的输出,但是在AspectJ编织步骤中,注释处理器的第二次运行立即将其覆盖。在aspectj-maven-plugin子句中添加一些配置可以解决此问题:

plusAssign()