我有一个包含 1000 多个 Java 源文件的 Maven 模块。其中一些具有通过处理器 Dagger 和 Immutables 处理的注释,每个处理器都会生成代码。当 Dagger 或 Immutables 注释文件中出现错误时,注释处理器无法完成。由此产生的构建错误包含触发处理器失败的“真实”错误,以及许多抱怨无法找到生成的代码的错误,例如我当前的示例中有 137 个错误。浏览所有此类错误以查找“真正的”错误是乏味的。
有没有办法将注释处理错误与无法生成代码而导致的其他错误分开?
我已经尝试过
proc:none
和 proc:only
作为 javac
参数,但似乎都没有任何区别。
如果有帮助,这里是用于编译的 pom.xml 部分
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<forceJavacCompilerUse>true</forceJavacCompilerUse>
<compilerArgs>
<arg>-proc:only</arg>
<arg>-verbose</arg>
<arg>-Xmaxerrs</arg>
<arg>1000</arg>
</compilerArgs>
</configuration>
</plugin>
我尝试过使用和不使用
-proc:only
和-proc:none
。请注意,需要 -Xmaxerrs 1000
,因为默认值似乎是 100,至少对我来说是这样。
直到我得到更好的答案(如果可能的话),到目前为止我的策略(如“@Matteo NNZ”建议)是将构建日志输出到文件,然后排除因无法生成代码而导致的最常见问题“找不到符号”,例如
$ grep "^\[ERROR\] /" output.txt | grep -v "cannot find symbol"
请注意,设置类似
-Xmaxerrs 1000
的内容在这里至关重要,以确保不会错过“真正的”错误。