2010-06-04 7 views
11

J'ai un projet maven qui charge un fichier xslt et exécute la transformation avec d'autres traitements sur le résultat. Normalement, lorsque l'utilisateur exécute l'application, l'utilisateur fournit le chemin du fichier xslt à charger. Mais j'inclus quelques fichiers xslt par défaut regroupés dans mon application que l'utilisateur peut utiliser sans charger de fichier xslt externe. Je fais cela en les ajoutant à src/main/resources/xslt. Mon problème est que je veux exécuter des tests sur ces fichiers xslt en phase de test. Comment puis-je atteindre cet objectif? Dois-je copier le contenu src/main/resources/xslt vers target/somewhere et les charger dans mon code de classes de test? Quel plugin est utilisé pour ça?Comment utiliser les ressources maven également comme ressources de test

Répondre

17

Mon problème est que je veux exécuter des tests sur ces fichiers xslt en phase de test. Comment puis-je atteindre cet objectif?

Il n'y a rien à faire, target/classes est sur le chemin de classe des tests. Plus précisément, le chemin de classe pour les tests est:

  • premier target/test-classes
  • puis target/classes
  • puis dependencies

donc les ressources de src/main/resources (qui sont copiés dans target/classes) sont visibles à partir d'essais.

+0

Oui .. après avoir posté la question, j'ai explicitement essayé de le faire et cela fonctionne. J'ai juste eu l'impression que c'est une convention que src/* est seulement pour la génération, le traitement et la compilation et que toute phase après cela devrait seulement regarder dans les chemins target/* pour faire son travail. N'est-ce pas vrai? – Paralife

+0

@Paralife Vos ressources sont copiées dans 'target/classes' (et les ressources de test sont copiées dans' target/test-classes'). J'ai clarifié ça. Est-ce que ça répond à la question? –

+0

Ah ok. Je n'ai pas compris qu'ils sont copiés. Je viens de dire que src/main/resources est visible directement depuis les tests. Je le vois maintenant. Merci. – Paralife

2

Si vous mettez un fichier à l'intérieur foo.txtsrc/test/resources/, vous pouvez ouvrir via:

// try-with-resource (Java 1.7) 
try (InputStream is = getClass().getClassLoader().getResourceAsStream("foo.txt")) { 
    // do something with is... 
} 

Vous pouvez également jeter un oeil à la maven-resources-plugin.

Questions connexes