解决 Java 9 模块系统中的可选依赖项
Resolve optional dependencies in Java 9 Module System
Java 9 模块系统通过 requires static my.module
支持可选依赖项。该依赖仅在编译时使用,即使在模块路径中,也不会在 运行 时解析。那么,如何解决可选依赖项?
- 解决方法:添加标志
--add-modules my.module
。
问题:该依赖是添加到根依赖还是作为根添加?
- 是否可以直接
requires
来避免使用 add-modules
标志?
A solution: Add flag --add-modules my.module. Question: is the
dependency added to the root dependency or is it added as root?
使用标志 --add-modules
添加的模块被添加到默认的根模块集和模块图中,并在运行时解析以执行,因为在编译时对模块的依赖被定义为可选.
Is it possible to have a direct requires to avoid using add-modules
flag?
是的,对于此类依赖项,您也可以直接 requires
并确保将模块非可选地添加到模块图中,但当您考虑可选与非可选时,这是一个设计问题项目的可选依赖项。
requires static
基本上提供了一种方法来指定模块依赖性,该依赖性在编译时是强制性的,但在运行时是可选的,用于与并非绝对必要但在运行时可以利用的库一起使用。
Java 9 模块系统通过 requires static my.module
支持可选依赖项。该依赖仅在编译时使用,即使在模块路径中,也不会在 运行 时解析。那么,如何解决可选依赖项?
- 解决方法:添加标志
--add-modules my.module
。 问题:该依赖是添加到根依赖还是作为根添加? - 是否可以直接
requires
来避免使用add-modules
标志?
A solution: Add flag --add-modules my.module. Question: is the dependency added to the root dependency or is it added as root?
使用标志 --add-modules
添加的模块被添加到默认的根模块集和模块图中,并在运行时解析以执行,因为在编译时对模块的依赖被定义为可选.
Is it possible to have a direct requires to avoid using add-modules flag?
是的,对于此类依赖项,您也可以直接 requires
并确保将模块非可选地添加到模块图中,但当您考虑可选与非可选时,这是一个设计问题项目的可选依赖项。
requires static
基本上提供了一种方法来指定模块依赖性,该依赖性在编译时是强制性的,但在运行时是可选的,用于与并非绝对必要但在运行时可以利用的库一起使用。