Maven2, war, META-INF

DerGrinsemann

Mitglied
Hallo!

Ich erstelle mittels maven2 (Plugin in Netbeans 6.5) eine .war-Datei, dabei gelingt es mir nicht (bzw. nur teilweise) den Inhalt des resources-Ordner an die richtige Stelle zu rücken.

Ordner-Struktur
Code:
/src/main/resources/seam.properties
/src/main/resources/META-INF/persistence.xml

landet im war-Package
Code:
/WEB-INF/classes/seam.properties
/WEB-INF/classes/META-INF/persistence.xml

erwarten würde ich aber
Code:
/seam.properties
/META-INF/persistence.xml
/WEB-INF/ ...

Nach einigen "googeln" habe ich meine pom.xml um folgendes ergänzt
Code:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<warName>${pom.artifactId}</warName>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>src/main/resources</directory>
</resource>
</webResources>
</configuration>
</plugin>

Jetzt befindet sich der Inhalt des resources-Ordner an der richtigen UND an der falschen Stelle!

Wo liegt mein Denkfehler?

Marco
 
Zuletzt bearbeitet:
Ich habe jetzt meine Ordner-Struktur geändert und alles von resources in den Ordner webapp verschoben:

Code:
/src/main/webapp/seam.properties
/src/main/webapp/META-INF/persistence.xml

Somit landet es im war-package an der richtigen Stelle.

Trotzdem bleibt die Frage "Wie gehört es richtig?"

Marco
 
So wie es tut, tut es richtig. src/main/resources landet im Classpath respektive JAR. D.h. wenn du das WAR Projekt als JAR baust, landet es im JAR Root. Dinge in src/main/webapp sind dediziert für die Webapplikation.

Oft hat man den Fall dass man den code unter der Webapp auch standalone verwenden will. Dann müssen die resourcen in src/main/resources. Alles was dediziert mit der Webapp zu tun hat in src/main/webapp.

REINHAUN!
 
Hallo Oliver!

Danke für deine Antwort! So betrachtet - logisch :)

Ist manchmal mühsam (besonders im Bereich J2EE) niemanden (erfahrenen) in unmittelbarer Nähe zu haben!

LG aus Wien
Marco

P.S.: Hab dich bei Xing entdeckt ;-)
 
Hehe, kein Thema. Vielleicht noch als "Eselsbrücke": Wenn du willst, dass es durch getClass().getResource(..) finden willst -> src/main/resources. Wenn du es durch getServletContext().getResource(..) finden willst -> src/main/webapp.

Gruß aus der Quadratestadt!
Ollie
 

Neue Beiträge

Zurück