web-dev-qa-db-fra.com

Project Jigsaw vs Maven

De Jigsaw Project :

Facilitez la construction et la maintenance des bibliothèques et des applications volumineuses pour les développeurs, pour les plates-formes Java SE et EE).

J'essaie de savoir ce qu'est le projet Jigsaw et jusqu'à présent, il semble que l'objectif de Project Jigsaw chevauche quelque peu ce que nous avons fait en utilisant la gestion des dépendances Maven (ou Gradle):

  • Est-ce une menace de construire des outils comme Maven?
  • Ou ma compréhension est fausse et le projet Jigsaw va compléter ces outils de construction en quelque sorte?
37
sud29

Réponse très simplifiée

Après Jigsaw, public ne sera public que dans la portée JAR. Pour voir la classe en dehors du JAR, elle doit être exportée.

Java forcera la modularisation car toute interaction inter-module devra être spécifiée dans le module-info fichier.

Par exemple, si vous produisez un WAR, il restera presque inchangé, mais tous les packages JAR du WAR doivent définir un module-info (ou ne pas le définir et être traités comme des modules automatiques ou sans nom).

Maven a 2 fonctionnalités principales: gestion des dépendances et construction:

  • La gestion des dépendances signifie que Maven peut déterminer les versions des bibliothèques et les télécharger à partir des référentiels.
  • La construction signifie que Maven peut compiler du code et le regrouper en artefacts.

Pour conclure: Maven sera toujours responsable de la construction, mais il faut apprendre à compiler et à empaqueter à l'aide des modules Jigsaw.

35
michaldo

Les modules ne sont en aucun cas une menace pour construire des outils. Les modules complètent les outils de construction car les outils de construction construisent un graphique de dépendance des artefacts et de leurs versions au moment de la construction tandis que les modules appliquent dépendances des artefacts/modules (non compris les versions) au moment de la construction et de l'exécution.

Depuis État du système de modules :

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