Der [Maven Loader] ist eine Erweiterung des [Tomcat] [Application Server] um einen [Maven] Class-Path Loader. Das Projekt ist sehr jung und wird in Zukunft noch mehr Features unterstützen. Zögern Sie nicht, Kontakt mit uns aufzunehmen. !!!Erklärung Bisher werden alle JARs in ein WAR-File nach /WEB-INF/lib eingepackt. [Maven Loader] löst dies nun anders und bietet volgende Vorteile: * __Kleine WAR-Files:__ Kleine Web-Applications hätten eingentlich nur einige hundert Kilobytes, selbst größere Anwendungen übersteigen selten einige Megabyte. In der Praxis findet man selten ein WAR-File unter 10 Megabyte, bei JEE-Anwendungen mit JSF, JPA und Spring ist man schnell bei 30 Megabyte. Kommen dann noch einige Drittbibliotheken dazu, kommt man schnell an die 100 Megabyte heran. * __Deployment:__ Die WARs werden oft durch File-Upload auf den Application-Server gebracht. Selbst wenn sie direkt im Dateisystem oder über das lokale Netzwerk kopiert werden, sind 100 Megabyte dennoch eine große Datenmenge. Mit der eigentlichen Web-Anwendung werden wieder und wieder dieselben Daten übertragen. Auf dem Application-Server wird das WAR dann wieder ausgepackt, weil die enthaltenen JAR-Dateien sonst nicht in den Class-Path eingefügt werden können. Werden mehrere WAR-Dateien deployed, werden die enthaltenen JAR-Dateien unter umständen viele Male in unterschiedliche Deploy-Verzeichnisse kopiert. Das kostet Speicher und Zeit. Mit [Maven Loader] werden nur noch die Nutzdaten upgeloaded und deployed. * __Build:__ Das bauen eines JAR-Files dauert nur wenige Augenblicke, weil es klein ist und nur die Dateien aus dem Projekt hineingepackt werden. Beim WAR-File geht das Compiling ebenso schnell, dann kommt das Packen der bereits gepackten JAR-Dateien, die Packer und CPU besonders intensiv beschäftigen. Und bei jedem Build dieselben Dateien. Mit [Maven Loader] werden nur noch die Projektdateien compiliert und eingepackt. * __Maven:__ Inzwischen hat sich [Maven] beim Build durchgesetzt, weil es bequemer ist, den eigentlich Code oder das erzeugte Artifact frei von Dependencies zu halten. Wieso sollte [Maven] also nicht auch am Application Server die Dependencies nachladen? !!!Lösung [Intersult] [Maven Loader] ist eine Erweiterung des [Tomcat] [Application Server], sodass dieser die Dependencies eines WAR-Files selbst laden kann. [Maven Loader] arbeitet dabei mit den settings.xml der Maven-Installation zusammen, sodass Proxy-Einträge oder Mirrors benutzt werden kännen. Dies ist gerade in Unternehmensanwendungen häufig der Fall. !!!Installation # Zunächst wird eine Tomcat-Instanz installiert. Das System ist bisher mit Tomcat 7 getestet, sollte auch mit Tomcat 6 lauffähig sein. # Innerhalb der Tomcat-Installation (z.B. C:\Java\apache-tomcat-7.0.42\) wird das maven-loader.zip aus dem Anhang ausgepackt. # Die Datei <tomcat>/conf/catalina.properties wird editiert. Der Eintrag common.loader wird zusätzlich um ${catalina.home}/maven-loader,${catalina.home}/maven-loader/*.jar erweitert. Nun ist der [Tomcat] Maven-fähig! !!!WAR-Files Es können weiterhin full blown WAR-Files installiert werden. Maven-WAR-Files (auch Thin-WAR genannt) enthalten ein <war-file>/META-INF/context.xml: {{{ <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" antiResourceLocking="true"> <Loader className="com.intersult.maven_loader.MavenLoader"/> </Context> }}} Dies aktiviert den [Maven Loader]. Der [Maven Loader] öffnet dann die POM-Datei des Projekts, die sich aus <war-file>/META-INF/pom.xml.