一个典型的module-info.java内容如下
在module-info.java当中,什么时候用 requires com.google.common.truth; 什么时候用requires truth; 什么时候用 requires static com.google.common.truth;
在 `module-info.java` 文件中使用 `requires` 关键字时,需要根据你的项目依赖和模块化需求来选择正确的表述。下面是关于不同 `requires` 语句的使用情景:
1. requires com.google.common.truth;:
? ?- 这种情况用于当你的模块需要在运行时和编译时依赖 `com.google.common.truth` 模块。
? ?- 这意味着 `com.google.common.truth` 是你的代码正常运行所必需的,它会被包含在模块路径中,并且在编译和运行时都是可用的。
2. requires truth;:
? ?- 这种情况用于当模块名是 `truth` 而不是 `com.google.common.truth` 时。
? ?- 这通常是因为模块的开发者在 `module-info.java` 文件中定义了模块名为 `truth`。你需要根据实际依赖的模块名来确定使用哪个。
3. requires static com.google.common.truth;:
? ?- 使用 `requires static` 表示 `com.google.common.truth` 模块是一个可选依赖,仅在编译时必需,但运行时可能不需要。
? ?- 这通常用于那些仅在开发或测试环境中需要的依赖,比如某些测试框架或者提供额外调试信息的库。
? ?- 这意味着如果在运行时这个模块不可用,程序依然可以运行,只要它不尝试执行那些依赖于该模块的代码。
在使用这些语句时,你需要清楚地了解你的项目依赖以及它们在你的应用程序中的角色。如果一个模块是核心功能的一部分,并且在整个应用程序的生命周期中都需要,那么应该使用普通的 `requires` 语句。如果某个模块仅在特定情况下(如编译时或测试时)需要,那么使用 `requires static` 是更合适的选择。