Disons que j'ai un projet Java utilisant Maven 3 et junit. Il y a src/main/java
y src/test/java
qui contiennent les sources principales et les sources de test, respectivement (tout est standard).
Maintenant je veux migrer le projet vers Java 9. src/main/java
Le contenu représente le module Java 9 ; il y a com/acme/project/module-info.java
ressemble à peu près à ceci :
module com.acme.project {
require module1;
require module2;
...
}
Et si le code de test a besoin module-info.java
de la sienne ? Par exemple, pour ajouter une dépendance sur un module qui n'est nécessaire que pour les tests, et non pour le code de production. Dans un tel cas, je dois mettre module-info.java
a 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, et je dois donc exporter des paquets du module principal vers le module de test, et exiger des paquets dans le module de test, quelque chose comme ceci :
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;
}
Cela 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 paquet est défini dans deux modules. Je dois donc maintenant avoir des projets différents dans le module principal et le module de test, ce qui n'est pas pratique.
J'ai l'impression de suivre le mauvais chemin, tout commence à être très laid. Comment puis-je avoir module-info.java
propre dans le code de test, ou comment puis-je obtenir les mêmes effets ( require
etc.) sans lui ?
0 votes
D'abord, oubliez Maven 2... utilisez Maven 3+... a
module-info
dans le test sont de mon point de vue n'a pas de sens ? Exigence spéciale / réalisation derrière cela ?1 votes
C'est Maven 3, bien sûr