Javac未运行注释处理器 问题

Javac未运行注释处理器 问题,java,maven,code-generation,javac,Java,Maven,Code Generation,Javac,我正在重温一个maven项目,我至少一年没有接触过它。我很确定当我离开它时它已经成功编译了(在target目录中仍然有一个工作jar),但是现在编译失败了,因为生成的类丢失了 我试过的 已验证目标/生成的源/注释中确实没有源(不存在) 确保没有使用-proc:none调用javac(它不是) Ranmvn clean dependency:unpack dependencies-Dmdep.usesubdirectory yperartifact=true以确保预期的依赖项位于类路径上,并且它

我正在重温一个maven项目,我至少一年没有接触过它。我很确定当我离开它时它已经成功编译了(在
target
目录中仍然有一个工作jar),但是现在编译失败了,因为生成的类丢失了

我试过的
  • 已验证目标/生成的源/注释中确实没有源(不存在
  • 确保没有使用
    -proc:none
    调用javac(它不是
  • Ran
    mvn clean dependency:unpack dependencies-Dmdep.usesubdirectory yperartifact=true
    以确保预期的依赖项位于类路径上,并且它们包含有效的
    META-INF/services/javax.annotation.processing.Processor
    条目(有多个,包括
    org.immutables.processor.ProxyProcessor
    
  • 遵循以下步骤:
  • 从maven调试日志中获取javac选项
  • 删除
    -nowarn
    选项并添加
    -verbose-XprintRounds-XprintProcessorInfo-Xlint-J-verbose
    。注意:我还必须添加到主类的相对路径,否则javac会抱怨没有源
  • 验证是否加载了处理器类(不存在
  • 查找至少一个处理循环日志(不存在)
  • 确保循环日志列表中存在注释(无循环日志
  • 在javac命令中添加了
    -proc:only
    选项
  • 还将
    -processor org.immutables.processor.ProxyProcessor
    添加到javac命令中(处理器现在已加载,但仍然没有打印回合,也没有生成类)
  • 将处理器选项更改为
    -processor org.immutables.processor.ProxyProcessorXXX
    ,以查看它是否会有所不同(它确实如此,它现在打印了一条警告,说明处理是通过
    过程请求的:仅
    ,但未找到处理器)
  • 如果我没有使用
    -processor
    选项,检查该警告是否出现,这将使javac从类路径检测处理器(它没有显示警告,这表明它正在检测处理器,但日志没有显示任何迹象)
  • 在从JDK1.8切换到JDK9(使用jenv)后,尝试了上述方法
  • 安装了Zulu 1.7,并在切换到Zulu 1.7后进行了上述尝试(使用jenv)
可能因素
  • 我完全干净地安装了macOS
  • 我以前经营过macOS Sierra,现在是High Sierra
  • 之前我没有安装JDK9
  • 很久以前我就开始使用Gradle了,所以我可能忘记了maven的一个重要细节
命令选项 这是我当前使用的javac命令:

javac
-d./目标/类别
-classpath./target/classes:$HOME/.m2/repository/com/google/dagger/dagger/2.4.jar:$HOME/.m2/repository/com/google/dagger/dagger/dagger-compiler/2.4.jar:$HOME/.m2/repository/com/google/auto/factory/auto-factory/1.0-beta3.jar:$HOME/.m2/repository/org/immutables/builder/2.3.9.jar:$HOME/.m2/repository/org/immutables/value/2.3.9/value-2.3.9.jar:
-sourcepath./src/main/java:
-s./目标/生成的源/注释
-冗长的
-打印轮
-XprintProcessorInfo
-Xlint
-J-详细
-processor org.immutables.processor.ProxyProcessor
-过程:仅限
./src/main/java/com/mycompany/myproject/main.java

注意:为了更好的可读性,我将每个参数放在新行上,用
$HOME/
/
替换绝对路径,并且省略了大多数依赖项

问题:
我在这里遗漏了什么?任何建议或指针都将不胜感激。

据我所知,maven生成了一个标记文件或标记目录(以点开始)对于生成的源。但它也是很久以前的事了……也许是吧?谢谢,这看起来很有前途。我没想到这个问题可能是不可改变的,但不幸的是我在日志中没有看到任何这样的错误。您引用的问题似乎确实相关;虽然没有打印此类错误,但当我尝试编译一个具有不可变注释的特定类时,它会按预期工作。奇怪的是,所有注释处理器不再运行。我将进一步调查。问题线程提到的一件事是添加
-Xmaxerrs 100000
(我还添加了
-xmax100000
),或javac可能无法打印最相关的信息,因为它超过了默认的错误/警告限制。我也尝试了Maven,但不幸的是,它在处理这些标志时遇到了问题:如果您创建一个新的裸Maven项目,其中只有几个类使用相同的注释,并检查它是否按照您的需要编译,该怎么办?