2010-06-04 7 views
11

Ich habe ein Maven-Projekt, das eine XSLT-Datei lädt und führt die Transformation zusammen mit anderen Verarbeitung auf das Ergebnis. Wenn der Benutzer die Anwendung ausführt, stellt der Benutzer normalerweise den xslt-Dateipfad bereit, der geladen werden soll. Aber ich schließe einige Standard-xslt-Dateien ein, die in meiner Anwendung gebündelt sind, die der Benutzer benutzen kann, ohne eine externe xslt-Datei zu laden. Ich tue dies, indem ich sie zu src/main/resources/xslt hinzufüge. Mein Problem ist, dass ich in der Testphase Tests gegen diese xslt-Dateien ausführen möchte. Wie kann ich das erreichen? Soll ich die src/main/resources/xslt-Inhalte nach target/irgendwo kopieren und diese in meinen Testklassen-Code laden? Welches Plugin wird dafür verwendet?Wie Maven Ressourcen auch als Testressourcen zu verwenden

Antwort

17

Mein Problem ist, dass ich in der Testphase Tests gegen diese xslt-Dateien ausführen möchte. Wie kann ich das erreichen?

Es gibt nichts zu tun, target/classes ist auf dem Klassenpfad der Tests. Mehr der Klassenpfad für die Tests genau ist:

  • erste target/test-classes
  • dann target/classes
  • dann dependencies

So Ressourcen aus src/main/resources (die in target/classes kopiert werden) sind von Tests sichtbar.

+0

Ja ... nach dem Posten der Frage habe ich explizit versucht, das zu tun und es funktioniert. Ich hatte gerade den Eindruck, dass es eine Konvention ist, dass src/* nur für die Erzeugung, Verarbeitung und Kompilierung gedacht ist und dass jede Phase danach nur in Ziel/Pfade gehen sollte, um ihre Arbeit zu erledigen. Ist das wahr? – Paralife

+0

@Paralife Ihre Ressourcen werden in 'target/classes' kopiert (und Testressourcen werden in' target/test-classes' kopiert). Ich habe das geklärt. Beantwortet es die Frage? –

+0

Ah ok. Ich habe nicht verstanden, dass sie kopiert werden. Ich nur, dass src/main/resources ist sichtbar von Tests direkt. Ich sehe es jetzt. Vielen Dank. – Paralife

2

Wenn Sie eine Datei setzen foo.txt innerhalb src/test/resources/, können Sie dies über öffnen:

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

Sie können auch einen Blick auf die maven-resources-plugin.

Verwandte Themen