Question

plug-in Surefire (test) de Maven mvn test-compile copie les fichiers dans src/test/resources à target/test-classes. Il compile .java en src/test/java et copie les fichiers compilés .class à target/test-classes.

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

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

Était-ce utile?

La solution

La copie des ressources est fait par le maven-plugin-ressources, et si vous lisez la doc de celui-ci, vous verrez comment ajouter la copie des ressources de src / test / java.

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

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

Autres conseils

bmargulies a donné réponse, mais laissez-moi remplir quelques détails.

<testresources> peut être ajouté au nœud <build> du POM du projet, comme ceci:

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

Que copie tout en src/test/java - y compris le code source de .java, que nous ne voulons pas.

Il a également (comme bmargulies seulement à se faire) et remplace le overrides paramètre par défaut <testResources> dans le POM parent standard tous les autres POM héritent de (à moins que l'héritage est changé). Le parent copie norme src/test/resources, donc en redéfinissant que, nous ne sommes pas calqués comme d'habitude, que nous ne voulons pas. (En particulier, ma raison tout pour ce faire est d'utiliser Unitils, qui veut que le fichier copié unitils.properties -. Et qui est (pour moi, de toute façon) dans src/test/resources

Nous ajouter à nouveau src/test/resources:

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

Cette copie dans l'ordre indiqué, de sorte que les fichiers qui existent dans les deux /src/test/java (et sous-répertoires) et dans /src/test/resources (et sous-répertoires), la version src/test/resources est celui qui finit dans test-classes.

Maintenant, nous devons pas copier les 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>

La seule façon cela a fonctionné pour moi quand je mets ma configuration de test dans le dossier de src/test/resources (analogue de src/test/java pour les fichiers source). Les fichiers de ce dossier est copié dans le dossier target/test-classes qui est sur le chemin de classe lors de 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>
  

Est-il possible d'obtenir une copie de Maven   ressources de src / test / java?

Oui, cela est facilement atteint avec le plug-in antrun .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top