来自Jigsaw项目:
使得开发人员更容易构建和维护Java SE和EE平台上的库和大型应用程序。
我正在尝试了解Jigsaw项目是什么,到目前为止,它似乎与我们使用Maven(或Gradle)依赖管理时的目标有所重叠:
- 它是否威胁到类似于Maven的构建工具?
- 或者我的理解是错误的,Jigsaw项目会以某种方式补充这些构建工具吗?
来自Jigsaw项目:
使得开发人员更容易构建和维护Java SE和EE平台上的库和大型应用程序。
我正在尝试了解Jigsaw项目是什么,到目前为止,它似乎与我们使用Maven(或Gradle)依赖管理时的目标有所重叠:
Jigsaw之后,public
只在JAR范围内公开。要在JAR外部查看类,必须导出它。
Java将强制模块化,因为任何模块间交互都必须在module-info
文件中指定。
例如,如果您生成了一个WAR文件,它几乎不会改变,但是在WAR中打包的所有JAR包必须定义一个module-info(或不定义它并被视为自动或未命名模块)。
Maven有两个主要功能:依赖管理和构建:
总之:Maven仍然负责构建,但必须学会使用Jigsaw模块进行编译和打包。
requires
这样的指令来管理依赖关系。这部分是否与maven/gradle重叠?对于从JDK 9开始工作的开发人员来说,正确的依赖关系管理方式是什么? - wlnirvana模块不会对构建工具造成威胁。模块是构建工具的补充,因为构建工具在构建时构造了一个依赖图,其中包含工件及其版本,而模块在构建时和运行时强制执行工件/模块的依赖关系(不包括版本)。
来自模块系统的现状:
"A module’s declaration does not include a version string, nor
constraints upon the version strings of the modules upon which it
depends. This is intentional: It is not a goal of the module system
to solve the version-selection problem, which is best left to build
tools and container applications."