# Maven Spring Context file



## Generic1 (13. Feb 2010)

Hallo,

bis jetzt hab ich die configurations Datei für Spring immer im Ordner src gehabt. Meine Frage wäre jetzt, wenn ich Maven benutze, mach ich das dann genauso dass ich die Spring Konfigurationsdatei in den src- Ordner gebe oder macht man das mittels Maven anders? 

Vielen Dank,


----------



## Noctarius (13. Feb 2010)

src/main/resources


----------



## Generic1 (15. Feb 2010)

Arbeite mit Netbeans und hab dort das Framework (Spring) automatisch zu meiner Webapplication hinzufügen lassen, Netbeans hat mir die Spring datei unter /WEB-INF gegeben, entstehen mir da Nachteile (beim deployen o.ä)?


----------



## Noctarius (15. Feb 2010)

naja Maven hat die Webapp Daten unter src/main/webapp und Resourcedateien gehören eigentlich unter src/main/resources.

Nachteile dürfte es nicht haben aber ich würde mich immer an den Maven Standard halten, nur um Probleme vorzubeugen.


----------



## Generic1 (15. Feb 2010)

Wenn ich die Resourcen unter src/main/resources hingebe, habe ich aber die Recourcen in der PAckagestruktur, das hat mich bis jetzt ein bisschen gestört.


----------



## Noctarius (15. Feb 2010)

Da gehören die ja auch hin. Das sind nun mal Resources.


----------



## Generic1 (15. Feb 2010)

Hättest Du vielleicht eine Link bzgl. Maven wo das aufgeführt ist, dass die resourcen in src/main/resources gehören.
Besten Dank,


----------



## maki (15. Feb 2010)

Generic1 hat gesagt.:


> Hättest Du vielleicht eine Link bzgl. Maven wo das aufgeführt ist, dass die resourcen in src/main/resources gehören.
> Besten Dank,


Die Links zu den Maven2 Büchern habe ich dir doch schon mal gespostet 
Gehört zum Standard Directory Layout.


----------



## byte (15. Feb 2010)

Generic1 hat gesagt.:


> Arbeite mit Netbeans und hab dort das Framework (Spring) automatisch zu meiner Webapplication hinzufügen lassen, Netbeans hat mir die Spring datei unter /WEB-INF gegeben, entstehen mir da Nachteile (beim deployen o.ä)?



Wenn Du mit Maven arbeitest, solltest Du nicht den Framework Support der IDE benutzen, weil die idR dann die Dependencies des Frameworks in Dein Projekt kopiert und das kollidiert dann mit Mavens Dependency Management.

Wenn Du Spring mit Maven benutzen willst, musst Du einfach nur in der POM die Abhängigkeiten zu Spring eintragen.

Wo die Spring XML Konfig hinkommt, hat noctarius ja schon geschrieben.


----------



## kama (15. Feb 2010)

Hallo,


Generic1 hat gesagt.:


> Hättest Du vielleicht eine Link bzgl. Maven wo das aufgeführt ist, dass die resourcen in src/main/resources gehören.


Hier:
Maven - Introduction to the Standard Directory Layout

MfG
Karl Heinz Marbaise


----------



## Generic1 (16. Feb 2010)

Heißt das dann auch, dass ich die Tomcat- Konfigurations- Datei (web.xml) von Web Pages/WEB-INF/web.xml nach "src/main/webapp" (Web application sources) gebe?
Ich würde jetzt mal sagen nein, denn dann wird diese von Tomcat ja nichtmehr gefunden, oder?

Den Pfad in web.xml unten muss ich dann aber auf jeden Fall ändern von WEB-INF/... auf main/resources/...?


```
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
```


----------



## Noctarius (16. Feb 2010)

Nope von WEB-INF nach src/main/webapp/WEB-INF 


Der Pfad für den AppContext ist nach Kopieren in src/main/resources einfach nur [c]<param-value>applicationContext.xml</param-value>[/c] weil src/main/resources direkt im Classpath landet


----------



## byte (16. Feb 2010)

Generic1 hat gesagt.:


> Heißt das dann auch, dass ich die Tomcat- Konfigurations- Datei (web.xml) von Web Pages/WEB-INF/web.xml nach "src/main/webapp" (Web application sources) gebe?
> Ich würde jetzt mal sagen nein, denn dann wird diese von Tomcat ja nichtmehr gefunden, oder?



Die Verzeichnisstruktur muss doch nicht der WAR Struktur entsprechen. Maven ist ein Build Tool. Es erzeugt Dir aus den Sourcen bei Bedarf auf WAR File mit der richtigen Struktur. Du kannst auch ohne erzeugen eines WAR Files direkt das Projekt in einem Embedded Tomcat starten (siehe Maven Goal: tomcat run).


----------



## Generic1 (16. Feb 2010)

Hallo nochmal,

also ich hab jetzt folgende Struktur in meinem Projekt, leider kann beim Starten der Anwendung die Spring- Datei applicationContext.xml nicht gefunden werden. Muss ich da noch was machen, ich hab in der web.xml nur 
	
	
	
	





```
<param-value>applicationContext.xml</param-value>
```
 angegeben und die Spring configurations- Dateien nach src/main/resources gegeben, wie unten dargestellt.







Fehlermeldung 

```
SCHWERWIEGEND: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML 
document from ServletContext resource [/applicationContext.xml]; nested exception is 
java.io.FileNotFoundException: Could not open ServletContext resource [/applicationContext.xml]
```


----------



## mvitz (16. Feb 2010)

Ich würde schätzen, die Source Folder sind bei dir falsch. Es sieht so aus, als wäre src selber ein Source Ordner (damit befindet sich dein App Context im package main.resources) und nicht nur die Ordner src/main/java und src/main/resources. Wie du das genau unter Netbeans änderst, muss dir allerdings jemand anderes sagen.


----------



## Generic1 (17. Feb 2010)

Hat jemand noch einen Tipp wie ich das am Besten machen kann, dass Maven die applicationContext.xml findet, oben hätte ich meine momentane Konfiguration.
Besten Dank,


----------



## Noctarius (17. Feb 2010)

Keine Ahnung, kenne mich mit Netbeans nicht aus, daher weiß ich auch nicht ob da was falsch ist


----------



## Generic1 (19. Feb 2010)

OK, vielleicht arbeitet doch jemand mit Netbeans und Maven,

Wenn ich über -> Projekt -> Properties -> Framework das Hibernate Framework zum Projekt hinzufüge, dann wird im Projekt ein Ordner "Other Sources/src/main/resources" eingefügt, in dem sich dann die Hibernate- Konfigurationsdatei "hibernate.cfg.xml" befindet.
Wenn ich dann noch das Spring- MVC- Framework hinzufüge über rechtsklick  auf das Projekt -> Properties -> Framework, dann werden die Konfigurationsdateien von Spring nicht in dem Ordner "Other Sources/src/main/resources" sondern in WEB-INF eingefügt.

Meine Frage wäre jetzt, ist das OK, wenn die Konfigurationsdateien aufgesplittet sind oder kann/soll man die Konfigurationsdateien an einem Ort zusammenfassen? Meiner Meinung nach müsste ja Netbeans wissen wo was hinkommt, ober?
Vielen Dank


----------



## Noctarius (19. Feb 2010)

src/main/resources wird einfach nur beim packen in den Basisordner des Classpath geschmissen. Wenn es klappt lass es doch im WEB-INF.


----------



## Generic1 (19. Feb 2010)

Was heißt Basisordner, werd das dann mal überprüfen, was in dem Target- Ordner drinnen ist und wenn es passt dann werd ichs eh so lassen.


----------



## Noctarius (19. Feb 2010)

Halt direkt im Jar / War, halt einfach ohne Package-Pfad (quasi im Default-Package). Kann aber sein, dass Spring das bei AppContext.xml bei Webanwendungen in der Standardkonfiguration im WEB-INF Ordner erwartet.

Bei uns liegt es auch unter src/main/webapp/WEB-INF aber mit einem entsprechenden Verweis in der web.xml
[xml]  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
  </context-param>[/xml]


----------

