2017-04-04 1 views
10

Le module declaration définit, entre autres, les dépendances d'un module. Si j'utilise Maven comme outil de construction, ceci est redondant car le pom.xml contient déjà ces (et plus) informations. Sur cette base, Maven ne pouvait-il pas générer le module-info.java pour moi?Can Maven génère la déclaration du module

+2

Je ne pense pas que ce soit possible, pour une raison simple: au sein d'une seule dépendance, je peux déjà avoir plusieurs modules Java (qui ne sont pas des dépendances), alors comment Maven peut-il avoir cette information? – john16384

+3

La déclaration du module n'est pas redondante ... quel est l'équivalent de "exports ..." dans le fichier pom? En outre, le 'requires java.sql' devrait savoir Maven à ce sujet? Qu'en est-il du nom du module? Sur la base de quoi devrait-on le deviner? artefactId? Ne fonctionnera pas .... Je recommande de lire la liste Maven DEV sur le mot-clé Jigsaw ... En dehors de cela qu'en est-il des dépendances transitives? – khmarbaise

Répondre

6

On peut s'attendre à ce que la plupart des dépendances soient également des modules requis. Cependant, les exigences peuvent également pointer vers des modules du JDK/JRE, qui ne sont pas spécifiés dans le pom.xml. Alors oui, si vous regardez seulement les dépendances, probablement la plupart d'entre elles pourraient être transformées en une référence de module requise. Mais un descripteur de module contient beaucoup plus d'informations, qui sont toutes basées sur des décisions à prendre par le développeur. J'ai écrit an article à ce sujet qui décrit en détail pourquoi il n'est pas possible de générer entièrement ce fichier.

+2

mais probablement il pourrait générer une sorte de déclaration de module par défaut ou minimale. Toutes les informations supplémentaires nécessaires (décisions faites par le développeur) peuvent être fournies via le pom (configuration dans un plugin). Avec cela le pom reste le seul et unique fichier de configuration à maintenir ?! Il existe également des plugins qui génèrent des fichiers bnd, des fichiers manifestes ou des fichiers web.xml contenant des informations fournies avec le pom. – dermoritz

+2

En fait, 'jdeps' (dans' jdk-9/bin') peut générer un descripteur initial basé sur le code compilé. Mais il ne peut pas faire partie du cycle de vie, car il doit être ajusté à la main. –