Frage

Maven Surefire (testing) Plugin mvn test-compile kopiert Dateien in src/test/resources zu target/test-classes. Es kompiliert .java in src/test/java und kopiert die kompilierten .class Dateien target/test-classes.

Aber es kopiert keine Ressourcen aus src/test/java, und es ist bequemer Lage sein, Testressourcen im selben Verzeichnis wie die .java Klassen setzen sie Ressourcen für die, als in einer parallelen Hierarchie in src/test/resources.

Ist es möglich, Maven zu bekommen Ressourcen von src/test/java zu kopieren?

War es hilfreich?

Lösung

Die Ressource Kopieren alle von der Maven-Ressource-Plugin durchgeführt wird, und wenn Sie die doc davon lesen, werden Sie sehen, wie aus src / test / java Kopieren von Ressourcen hinzuzufügen.

Siehe http://maven.apache.org/plugins/maven-resources- plugin / testResources-mojo.html für das Test-Ressourcen Ziel, die in dem Standard-Lebenszyklus enthalten ist.

Und dann finden Sie unter http://maven.apache.org/pom.html und sucht <testResources>.

Andere Tipps

bmargulies gab die Antwort , aber lassen Sie mich in einigen Details füllen.

<testresources> kann den <build> Knoten des Projektes POM hinzugefügt werden, wie folgt:

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

Das kopiert alles in src/test/java - einschließlich der .java Quellcode, die wir nicht wollen.

Es ist auch (als bmargulies nur angedeutet) überschreibt und ersetzt die Standard <testResources> Einstellung im Standard-Mutter POM, dass alle anderen POM, vererben (es sei denn, dass Vererbung geändert wird). Die Standard-Mutter Kopien src/test/resources, so durch, dass überschreiben, bekommen wir nicht, dass wie üblich kopiert, was wir nicht wollen. (Insbesondere mein ganzer Grund dafür ist unitils zu verwenden, die die unitils.properties Datei kopiert will -. Und das ist (für mich jedenfalls) in src/test/resources

So wir wieder add src/test/resources:

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

Das Kopie in der Reihenfolge aufgeführt, so dass für Dateien, die in sowohl /src/test/java existieren (und Unterverzeichnisse) und in /src/test/resources (und Unterverzeichnissen), die src/test/resources Version ist die, dass Ende in test-classes auf.

Nun wir müssen nur nicht kopieren Sie die Dateien .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>

Der einzige Weg, es funktionierte für mich, wenn ich meine Testkonfiguration in src/test/resources Ordner speichern (analog src/test/java für Quelldateien). Dateien aus diesem Ordner auf dem target/test-classes Ordner kopiert, die während des Tests die Ausführung auf dem Classpath ist. Ich weiß nicht, warum, aber die nächste Konfiguration hat nicht funktioniert für mich:

<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>
  

Ist es möglich, Kopie zu erhalten maven   Ressourcen aus src / test / java?

Ja, das ist leicht mit der erreichten antrun Plugin .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top