Zim*_*ger 6 maven java-platform-module-system java-9
If I have all types of modules in my project (application, automatic and unnamed) how exactly Maven will work with them? Can I enforce Maven to treat some jars as automatic modules whereas other modules to stay in classpath. How to gradually migrate to module system with Maven?
Maven 只是管理您的依赖项(jar)。它不关心依赖项是否是 java 模块。
Maven 提供帮助的唯一方法是,如果您通过 Maven(例如mvn spring-boot:run)启动应用程序,那么您可以添加一些 JVM 参数,例如--add-modules.
如果您想知道自动和未命名模块,这完全取决于您启动应用程序的方式,有两种方法可以做到这一点:
由于模块必须需要其所有依赖项,并且这些依赖项只能由其他命名模块(即不是类路径上的 JAR)来实现,因此模块化 JAR 的所有依赖项都必须放置在模块路径上。是的,即使是非模块化 JAR,也会变成自动模块。
有趣的是,自动模块可以读取未命名的模块,因此它们的依赖项可以位于类路径上。
并且由于非模块化代码不表达任何依赖关系,因此它不会从模块路径解析模块。
因此,如果非模块化代码依赖于模块路径上的工件,则需要使用该
--add-modules选项手动添加它们。例如,如果您想使用
ServiceLoader.load(Foo.class);并从非模块化代码编译应用程序,则必须将Foo类的提供程序模块显式添加到模块图中--add-modules。
模块系统状态的注释:
如果在命名模块和未命名模块中都定义了包,则未命名模块中的包将被忽略。
| 归档时间: |
|
| 查看次数: |
4226 次 |
| 最近记录: |