我正在编写一个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选项不会显示在注释处理器中。
答案 0 :(得分:0)
事实证明,原始问题中忽略了关键信息。被编译的模块还需要与AspectJ编织在一起,这将重新运行编译器。注释处理器确实在编译步骤中运行并产生其正确的输出,但是在AspectJ编织步骤中,注释处理器的第二次运行立即将其覆盖。在aspectj-maven-plugin子句中添加一些配置可以解决此问题:
plusAssign()