有没有办法将Java注释处理错误与其他编译错误分开?

问题描述 投票:0回答:1

我有一个包含 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,至少对我来说是这样。

java compiler-errors javac annotation-processing
1个回答
0
投票

直到我得到更好的答案(如果可能的话),到目前为止我的策略(如“@Matteo NNZ”建议)是将构建日志输出到文件,然后排除因无法生成代码而导致的最常见问题“找不到符号”,例如

$ grep "^\[ERROR\] /" output.txt | grep -v "cannot find symbol"

请注意,设置类似

-Xmaxerrs 1000
的内容在这里至关重要,以确保不会错过“真正的”错误。

© www.soinside.com 2019 - 2024. All rights reserved.