Project Jigsaw vs Maven

时间:2016-10-04 05:13:43

标签: maven java-9 jigsaw

来自Jigsaw Project

  

让开发人员更容易构建和维护库和   适用于Java SE和EE平台的大型应用程序。

我试图了解Jigsaw是什么项目,到目前为止,Project Jigsaw的目标似乎与我们使用Maven(或Gradle)依赖关系管理所做的有些重叠:

  • 构建像Maven这样的工具是一种威胁吗?
  • 或者我的理解是错误的,项目Jigsaw将以某种方式补充这些构建工具?

2 个答案:

答案 0 :(得分:33)

非常简化的答案

Jigsaw 之后,public将仅在JAR范围内公开。要查看JAR之外的类,必须将其导出。

Java将强制进行模块化,因为必须在module-info文件中指定任何模块间交互。

例如,如果生成WAR,它将保持几乎不变,但WAR中的所有JAR包必须定义module-info(或者不定义它,并将其视为自动或未命名的模块)。

Maven 有两个主要功能:依赖关系管理和构建:

  • 依赖管理意味着Maven可以确定库的版本 并从repositiories下载它们。
  • 构建意味着Maven可以编译代码并将其打包成工件。

总结:Maven仍将负责构建,但必须学习如何使用Jigsaw模块进行编译和打包。

答案 1 :(得分:8)

模块对构建工具不构成任何威胁。模块补充构建工具,因为构建工具构建构建时的工件及其版本的依赖关系图,而模块强制构建时的工件/模块(不包括版本)的依赖关系运行。

来自State of the Module System

"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."