2009-08-24 9 views

Antwort

30

Sie können build-helper-maven-plugin verwenden, um zusätzliche Testressourcenverzeichnisse wie folgt anzugeben. Mit Hilfe der Konfiguration unten, wird der Inhalt des Test-Ressourcen-Verzeichnis wird während der generieren-Test-Quellen Phase zu dem Ziel/Test-Klassen-Verzeichnis kopiert werden:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.12</version> 
    <executions> 
    <execution> 
     <id>add-test-resource</id> 
     <phase>generate-test-sources</phase> 
     <goals> 
     <goal>add-test-resource</goal> 
     </goals> 
     <configuration> 
     <resources> 
      <resource> 
      <directory>path/to/additional/test/resources</directory> 
      <excludes> 
       <exclude>**/folder-to-exclude/**</exclude> 
      </excludes> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+4

Es spielt keine Rolle, aber für Ordnung, sollte die Phase nicht generiert werden -ressourcen statt generate-test-sources? – thSoft

23

Wenn Sie nur setzen wollen Ihre Immobilie Dateien irgendwo auf der Festplatte und nicht mag, dass diese Eigenschaft Dateien kopieren während der Build-Ziel/Test-Klassen, können Sie es tun auf diese Weise

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <additionalClasspathElements> 
     <additionalClasspathElement>/add/this/to/path</additionalClasspathElement> 
    </additionalClasspathElements> 
    </configuration> 
</plugin> 
+1

Leider nimmt m2e Surefire-Konfiguration nicht auf, wenn Tests von Eclipse ausgeführt werden. Schade, denn das ist ein bisschen einfacher als das add-test-resource-Ziel von build-helper-maven-plugin. – thSoft

7

Warum nicht einfach test/resources verwenden und platzieren Sie Ihre Eigenschaften in dem classpath aus dieser Punkt. Sie werden nur für die Testphase da sein.

+1

Man hat nur einen solchen Ordner, aber oft mehr als eine Testumgebung. – 30thh

+0

Check out maven Profile, mein Freund. –

4

Wenn Sie eine Umgebung mit mehreren Ressourcen haben, können Sie das maven-Profil verwenden und Ihre verschiedenen Ressourcen entsprechend dem Profil einstellen, das Sie testen.

test/resources/uat 
test/resources/prod 
test/resources/dev 

Aber usualy wenn Sie, dass Sie Sie Integrationstest dann brauchen nicht die Build-Helfer-Maven-Plugin machen.

1

Die maven-resources-plugin hat eine copy-resources Ziel, mit dem Sie Ressourcen kopieren können. Zum Beispiel:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <id>additional-resources</id> 
     <phase>process-test-resources</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.testOutputDirectory}</outputDirectory> 
      <resources> 
      <resource> 
       <directory>${project.basedir}/conf</directory> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Dadurch wird der Inhalt des conf Ordner in der Basis Ihres Projekts auf den target/test-classes Ordner kopieren (es sei denn, Sie project.build.testOutputDirectory geändert), die während Ihrer Unit-Tests zu dem Classpath hinzugefügt werden .

23

Sie können auch neue Testressourcenordner hinzufügen.

Der erste Pfad, src/test/resources, ist der Standardwert. Angenommen, Sie möchten immer noch den Standardpfad verwenden, vergewissern Sie sich, dass er enthalten ist. (Das testResources-Tag überschreibt Ihre Standardwerte. Wenn Sie den Standardpfad nicht explizit angeben, wird er nicht mehr verwendet.)

+0

Das hat für mich funktioniert. +1 für das Hinweis auf die Notwendigkeit für den Standard. –

+2

Genau das habe ich gesucht, danke! Viel einfacher als die akzeptierte 'build-helper-maven-plugin' Lösung. Für alle anderen, die nach einem guten Weg suchen, dies zu tun, kann das ' ...' -Konstrukt auch zu Ihren maven-Profilen hinzugefügt werden, z. falls Sie verschiedene Ressourcen für verschiedene Umgebungen angeben möchten (local/dev/test/prod). –

Verwandte Themen