是否可以告诉 -Werror 在 Java 编译期间忽略某个 class 或某个警告?

Is it possible to tell -Werror to ignore a certain class or a certain warning during Java compilation?

我使用 Gradle 构建我的 Java 项目,使用以下设置将警告视为错误:

tasks.withType(JavaCompile) {
  options.compilerArgs << "-Xlint:unchecked" << "-Werror"
}

现在我们想在某个 class(我们称之为 Experimental.java)中进行一些实验性研究,这会引发一些警告(warning: XYZ is internal proprietary API and may be removed in a future release)。这样就导致了整个项目不build的问题

我们是否可以根据 -Werror(即 "don't check Experimental.java")将某个 class 排除在检查范围之外?或者我们可以告诉 -Werror 忽略某个警告(即 "don't treat internal proprietary API warning as error")吗?我们不想完全关闭 -Werror,其他 class 仍然应该这样对待。

感谢 this answer 我想出了一个解决方案。

首先,必须添加编译器标志 -XDenableSunApiLintControl,然后可以使用 -Xlint:-sunapi.

关闭 "Sun internal warnings"

我调整后的 Gradle 构建文件如下所示:

tasks.withType(JavaCompile) {
  options.compilerArgs << "-XDenableSunApiLintControl" << "-Xlint:all" << "-Werror" << "-Xlint:-sunapi"
}