Подтвердить что ты не робот

Проект Jigsaw против Maven

От Jigsaw Project:

Упростите разработчикам создавать и поддерживать библиотеки и больших приложений для платформ Java SE и EE.

Я пытаюсь узнать, какой проект Jigsaw и до сих пор кажется, что цель Project Jigsaw где-то пересекается с тем, что мы сделали с использованием Maven (или Gradle): управление зависимостями.

  • Это угроза для создания таких инструментов, как Maven?
  • Или мое понимание неправильное и проект Jigsaw собирается дополнить эти инструменты сборки каким-то образом?
4b9b3361

Ответ 1

Очень упрощенный ответ

После Jigsaw, public будет публичным только в пределах JAR. Чтобы увидеть класс вне JAR, он должен быть экспортирован.

Java будет принудительно выполнять модуляцию, потому что любое взаимодействие между модулями должно быть указано в файле module-info.

Например, если вы создаете WAR, он останется почти неизменным, но все пакеты JARs в WAR должны определять информацию о модуле (или не определять его и обрабатываться как автоматически или неназванные модули).

Maven имеет две основные функции: управление зависимостями и построение:

  • Управление зависимостями означает, что Maven может определять версии библиотек и загрузить их из репозиториев.
  • Создание означает, что Maven может скомпилировать код и упаковать его в артефакты.

В заключение: Maven по-прежнему будет нести ответственность за строительство, но нужно научиться компилировать и упаковывать с использованием модулей Jigsaw.

Ответ 2

Модули никоим образом не являются угрозой для создания инструментов. Модули дополняют инструменты сборки, поскольку инструменты сборки конструируют график зависимости артефактов и их версий во время сборки, а модули обеспечивают зависимости артефактов/модулей (не включая версии) во время сборки и время выполнения.

Из Состояние модульной системы:

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