Disons que j'ai un projet Java utilisant Maven 3 et junit. Il existe des répertoires src/main/java
et src/test/java
qui contiennent respectivement les sources principales et les sources de test (tout est standard).Java 9 + maven + junit: est-ce que le code de test a besoin de module-info.java de son côté et où le mettre?
Maintenant, je souhaite migrer le projet vers Java 9. Le contenu src/main/java
représente le module Java 9; il est à la recherche d'environ com/acme/project/module-info.java
comme ceci:
module com.acme.project {
require module1;
require module2;
...
}
si le code de test doit module-info.java
de son propre? Par exemple, pour ajouter une dépendance à un module qui est seulement nécessaire pour les tests, pas pour le code de production. Dans un tel cas, je dois mettre module-info.java
à src/test/java/com/acme/project/
en donnant au module un nom différent. De cette façon, Maven semble traiter les sources principales et les sources de test comme des modules différents, donc je dois exporter des paquets du module principal vers le module de test, et exiger des paquets dans le module de test:
module principal (en src/main/java/com/acme/project
):
module prod.module {
exports com.acme.project to test.module;
}
module de test (en src/test/java/com/acme/project
):
module test.module {
requires junit;
requires prod.module;
}
Ce produit
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile (default-testCompile) on project test-java9-modules-junit: Compilation failure: Compilation failure:
[ERROR] /home/rpuch/git/my/test-java9-modules-junit/src/test/java/com/acme/project/GreeterTest.java:[1,1] package exists in another module: prod.module
car un package est défini dans deux modules. Donc maintenant je dois avoir différents projets dans le module principal et le module de test, ce qui n'est pas pratique. Je sens que je suis un mauvais chemin, tout commence à avoir l'air très moche. Comment puis-je avoir module-info.java
de son propre dans le code de test, ou comment puis-je obtenir les mêmes effets (require
, etc) sans elle?
D'abord oublier Maven 2 ... utiliser Maven 3 + ... un 'module-info' dans le test est-ce que de mon point de vue cela n'a pas de sens? Exigence spéciale/réalisation derrière cela? – khmarbaise
C'est Maven 3, bien sûr –