如何正确抑制“自动模块需要传递指令”警告?
将 Maven 项目升级到 Java 9 并添加模块描述符后,抱怨自动模块的传递依赖关系:javac
[警告] /.../src/main/java/module-info.java:[3,35] 需要自动模块的
传递
指令
重现问题的示例:module-info.java
module com.example.mymodule {
exports com.example.mymodule.myexportedpackage;
requires transitive com.google.common;
}
这个警告的含义是完全清楚的,这里有一些相关的链接:
问题是 - 如何在不修复实际问题和不禁用所有其他警告的情况下抑制此警告?javac
我尝试了以下选项,但没有一个有效:
-
@SuppressWarnings("module")
在module-info.java
-
@SuppressWarnings("all")
在module-info.java
-
-Xlint:all,-module
命令行选项
不幸的是,我无法解决实际问题(目前),因为“我的”模块具有来自第三方(自动)模块(例如Guava)的返回类型和注释。因此,如果我使用“require com.google.common”(没有),那么就会有不同的警告,例如:transitive
[警告] .../MyClass.java:[25,20] 模块中的类不会使用
com.google.common.collect.Table
com.google.common
requires transitive
当然,我无法为第三方库(现在是自动模块)定义模块描述符。
我正在使用我宁愿保留的内容,因此警告不仅仅是令人讨厌的...-Werror
附言:我不打算将我的工件发布到任何公共存储库。