39 votes

Maven (surefire): copier les ressources de test depuis src / test / java

Maven est infaillible (test) plugin copie les fichiers dans src/test/resources pour cible/test-classes. Il compile .java dans src/test/java, et des copies de la compilation .les fichiers de classe pour cible/test-classes.

Mais il ne copie pas les ressources de la src/test/java, et c'est plus pratique pour être en mesure de mettre des ressources de test dans le même répertoire que le .des classes java, ils sont des ressources, que dans une hiérarchie parallèle dans src/test/resources.

Est-il possible d'obtenir maven pour copier les ressources de la src/test/java?

46voto

assylias Points 102015

bmargulies a donné la réponse, mais permettez-moi de remplir quelques détails.

<testresources> peut être ajouté à l' <build> nœud de la POM maven, comme ceci:

 <testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
 </testResources>

Qui copie tout dans src/test/java -- y compris l' .le code source de java, que nous ne voulons pas.

Il a également (comme bmargulies esquissee) supplante et remplace la valeur par défaut <testResources> réglage de la norme parent POM que tous les autres POM hériter (à moins que l'héritage est changé). La norme parent copies src/test/resources, donc par des raisons impérieuses que nous n'avons pas copié comme d'habitude, que nous ne voulons pas. (En particulier, toute ma raison pour faire cela est d'utiliser unitils, qui veut que le unitils.les propriétés de fichier copié -- et c'est (pour moi en tout cas) dans src/test/resources.

Nous avons donc re-ajouter src/test/resources:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

Que les copies dans l'ordre de la liste, de sorte que pour les fichiers qui existent dans les deux /src/test/java (et sous-répertoires) et dans /src/test/resources (et sous-répertoires), la src/test/resources version est celle qui termine dans les test-classes.

Maintenant nous avons juste besoin de ne pas copier le .fichiers java:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

20voto

bmargulies Points 49855

Les ressources de la copie est effectuée par le maven-ressources-plugin, et si vous lisez la doc de celui-ci, vous allez voir comment ajouter de copier des ressources de la src/test/java.

Voir http://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.html pour le test-ressources objectif, qui est inclus par défaut dans le cycle de vie.

Et puis voir http://maven.apache.org/pom.htmlet recherchez <testResources>.

3voto

La seule façon dont cela a fonctionné pour moi lorsque j'ai mis ma configuration de test dans le dossier src / test / resources (analogue de src / test / java pour les fichiers source). Les fichiers de ce dossier sont copiés dans le dossier target / test-classes qui se trouve sur le chemin de classe pendant l'exécution des tests. Je ne sais pas pourquoi, mais la prochaine configuration n'a pas fonctionné pour moi:

 <testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>
 

0voto

javamonkey79 Points 6807

Est-il possible d'obtenir maven pour copier des ressources depuis src / test / java?

Oui, cela est facilement réalisable avec le plugin antrun .

0voto

gunalmel Points 141

Vous pouvez essayer d'utiliser Build Helper Maven Plugin voir l'exemple d'utilisation ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X