Beschäftige dich erst später mit Archetypen
Für alle Informationen, die Sie über Maven wissen müssen, lesen Sie einige der Bücher auf ihrer Website . Das ist jedoch ein bisschen übertrieben für das, was Sie erreichen wollen.
Legen Sie Ihre Webanwendung zunächst wie folgt gemäß der Standardstruktur von Maven für Webanwendungen an. (Sie brauchen dafür keinen Maven-Archetyp, es sind nur ein paar Standardordner, die Sie in 2 Minuten erstellen können.)
src/main/java
- Enthält Ihren Produktions-Java-Code
src/main/resources
- enthält die Ressourcen Ihres Produktionsklassenpfads (z. B. Spring-Kontexte)
src/main/webapp
- (enthält WEB-INF / web.xml aber keinen lib Ordner)
src/test/java
- enthält Ihren Test-Java-Code
src/test/resources
- enthält Ihre Testressourcen (z. B. XML-Feeds für Webdiensttests usw.)
Grundlegende Plugins
Der nächste Schritt ist die Auswahl einer Reihe von Plugins. Die üblichen Verdächtigen sind offensichtlich diejenigen, die Bereinigen, Kompilieren und Ressourcen unterstützen (kommen als Teil von Maven, aber Sie können sie konfigurieren). Dann haben Sie den Surefire Unit Tester und das WAR-Plugin. Das reicht aus, um eine sehr einfache Webanwendung zu erstellen.
Fortgeschrittenere Plugins
Der nächste Schritt besteht darin, Findbugs- und PMD-Plugins einzuführen, die Ihrem Code eine gründliche Analyse ermöglichen und verschiedene potenzielle Probleme melden. Sie werden wahrscheinlich JXR zum Querverweisen auf den Quellcode, eine Tagliste zum Verfolgen von TODOs und REFACTOR-Tags usw. benötigen. Über alles...
... Verwenden Sie das Jetty-Plugin für Webanwendungen
Verwenden Sie das Jetty-Plugin, um Ihre WAR-Datei in Ihrer IDE für ein einfaches Debuggen auszuführen. Es ist schnell und klein und erledigt die Arbeit sehr schnell. Wenn Sie Jetty als Teil Ihres Maven-Builds haben, kann Ihr Projekt auf jedem Computer getestet werden, ohne dass eine IDE mit einigen konfigurierten komplexen Servern erforderlich ist. Sie können damit auch Abhängigkeiten von anderen WAR-Dateien deklarieren. Dies bedeutet, dass Sie mit einem einzigen Befehl "mvn clean jetty: run" eine vollständige Arbeitsumgebung erstellen können, die aus mehreren Webanwendungen besteht. Dies funktioniert überall, und Sie können sogar eine JNDI-Testkonfiguration bereitstellen, damit Ihre Datenquellen mit Federkraft alle extern konfiguriert werden. Wenn Sie diesen Jetty-Ansatz mit einer Standard-HTML-Demonstrationsseite kombinieren (src/test/resources/demo.html
) Sie sparen Unmengen von Entwicklerstunden beim Versuch, eine funktionierende lokale Umgebung zu schaffen. Ein Befehl und Sie sind fertig. Einfach.
Konfigurieren Sie Ihre IDE
Mit Maven ist es einfach, da alle großen Jungs es unterstützen: Eclipse, Netbeans und natürlich meine persönliche Lieblingsintelligenz. Zeigen Sie einfach mit Ihrer IDE auf die Datei pom.xml, damit alle aufgeführten Abhängigkeiten für Sie gelöscht werden. Nie mehr herumspielen mit WEB-INF/lib
. In Eclipse verwenden Sie normalerweise Datei | Importieren ... | Maven-Projekt | pom.xml.
Integration mit Hudson
Installieren Sie zuerst Hudson (es ist nur eine Webanwendung) und richten Sie Ihr Versionskontrollsystem darauf aus, dass es die entsprechende Version auscheckt. Der letzte Schritt besteht darin, es so zu konfigurieren, dass es Maven zum Erstellen verwendet. Offensichtlich muss Maven auf Ihrer Build-Maschine installiert sein (vorausgesetzt, es unterscheidet sich von Ihrer Entwicklungsmaschine).
Hudson erstellt nur die Momentaufnahme
Lassen Sie Hudson Snapshot-Builds ausführen und Release-Builds einem manuellen Prozess überlassen. Die Verwendung dieses Ansatzes bedeutet, dass Entwickler ihren Code unter einer Snapshot-Revision (z. B. 1.0.0-SNAPSHOT) freigeben können. Nur wenn der Build erfolgreich übergeben werden kann, wird er im Team-Repository freigegeben. Normalerweise führt Hudson "mvn clean deploy" aus, obwohl das Einbeziehen des Ziels "site" auch Teil Ihres Prozesses sein kann, da eine kleine Projektwebsite für jeden Build erstellt wird. Entwickler im Team können den aktualisierten Snapshot-Build über den Maven-Abhängigkeitsverwaltungsprozess automatisch in ihr Projekt aufnehmen.
Hudson bietet eine Fülle von Plugins, die alle Arten von Metriken unterstützen. Mein persönlicher Favorit ist es, die Anzahl der bestandenen Tests pro Projekt im Laufe der Zeit zu verfolgen. Es ist großartig, dem Management zu zeigen, dass die Anzahl und Abdeckung Ihrer Testeinheiten ständig zunimmt.
Allgemeine Anleitung zur Einrichtung
Teilen Sie Ihre Repositorys in mindestens die folgende Struktur auf:
- team-release - Alle Ihre freigegebenen Produktionsartefakte finden Sie hier
- Team-Snapshot - Alle Ihre Snapshot-Entwicklungsartefakte werden hier abgelegt
- Drittanbieter-Release - Alle unterstützenden Drittanbieter-Bibliotheken (z. B. Spring, Hibernate usw.) befinden sich hier.
Entwicklerbenutzerkonten sollten nicht in der Lage sein, Snapshots oder Releases in die Team-Repositorys zu schreiben. Dies würde es einem Entwickler ermöglichen, Hudson zu umgehen, wenn er es eilig hat und schnell zur Norm wird.
Stellen Sie sicher, dass Sie immer die Quell-, Javadocs- und SHA-Signaturen für alle Ihre Drittanbieter herunterladen. Jarvana ist ein ausgezeichneter Repository-Explorer für all jene, die schwer zu finden sind.
Installieren Sie einen Repository-Manager wie Nexus oder Artifactory, um die Kontrolle über Ihr ständig wachsendes Repository zu verbessern.