Java EE-Projekte mit Maven erstellen

13

Ich entwickle seit ungefähr einem Jahr Java EE-Webanwendungen mit Eclipse. Mein Arbeitgeber nutzt Maven nicht, aber je mehr ich darüber lese, desto mehr bin ich davon überzeugt, dass Maven + Hudson für uns von großem Nutzen sein wird. Zunächst muss ich mich jedoch in meiner Freizeit mit diesen Technologien vertraut machen, damit ich einen Proof-of-Concept erstellen kann.

Im Moment bin ich immer noch ein Maven-Neuling. Gibt es eine Reihe von Best Practices zum Erstellen von Java EE-Webanwendungen mit Maven? Beispielsweise könnte ich ein Projekt mit einem grundlegenden Archetyp erstellen und dann alle erforderlichen JARs hinzufügen, indem Abhängigkeiten für den Servlet-Container, EJB, EclipseLink usw. in den POM eingefügt werden. Dies könnte funktionieren, ist jedoch möglicherweise nicht der beste Weg, es zu tun. Ich würde mich sehr über jede Anleitung freuen, die Sie zu diesem Thema geben könnten.

Michael
quelle

Antworten:

10

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.

Gary Rowe
quelle
2
Sonar ist auch ziemlich genial und passt gut zu Maven / Hudson
Kevin
1
Absolut. Wenn ich gerade an einem Maven-Projekt in einem Team arbeite, würde ich erwarten, dass ein lokaler Findbugs / PMD die Mörderprobleme schnell aufdeckt, dann ein Sonar-Job nach einem Jenkins-Build mit Artefakt-Bereitstellung auf Nexus oder Artifactory. Auf diese Weise können Artefakte leicht lokalisiert und die Auswirkungen ("wo verwendet") auf diese Artefakte im gesamten Projektökosystem analysiert werden. Zusammen mit git, JIRA und Fisheye steht Ihnen ein fantastischer Entwicklungsprozess zur Verfügung.
Gary Rowe
1
Gary, PDF-Link ist abgelaufen
user1787812
1

Maven bietet viele Archetypen

mvn archetype:generate

druckt eine Liste der verfügbaren.

Der Hauptunterschied zwischen einfachen Java-Archetypen und J2EE-Archetypen besteht darin, dass Verzeichnisse für jsp und Images generiert werden. Wenn Sie ein neues J2EE-Projekt starten, sollten Sie eines von ihnen von Anfang an verwenden.

Wenn Ihr Projekt wächst, können Sie weitere Abhängigkeiten hinzufügen. Persönlich bevorzuge ich es, mit einer minimalen Sammlung von Abhängigkeiten (z. B. J2EE-Grundarchetyp) zu beginnen und dann nach und nach das hinzuzufügen, was ich brauche.

andreasmk2
quelle
0

Ich habe es getan, indem ich von einem einfachen Archetyp ausgegangen bin und alle Teile hinzugefügt habe, und ich bin mir ziemlich sicher, dass dies kein sehr guter Weg ist. Aber ich finde es auch andersherum umständlich; Die Auswahl eines guten Archetyps ist schwierig, es sei denn, Sie sind bereits „mit den Geheimnissen vertraut“. Das ist alles ein bisschen zu viel für meinen Geschmack wie Zauberkunst (im Gegensatz zu vernünftigen, auffindbaren technischen Informationen)…

Donal Fellows
quelle
Und ich denke, das ist eine gute Frage. Ich wünschte, ich hätte eine bessere Antwort.
Donal Fellows
Es wird sehr geschätzt, Sir.
Michael
0

Maven bietet eine Möglichkeit, Projekte aus Vorlagen zu erstellen, die als Archetypen bezeichnet werden . Mit dem Befehl können Sie mvn archetype:generateeine interaktiv auswählen . Sie können eine auch direkt angeben.

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

Alles auf einer Linie.


quelle
0

Ich habe Maven und Hudson in den letzten drei Monaten benutzt. Es hilft mir, den Zustand der Codebasis regelmäßig zu überprüfen, indem alle Komponententests ausgeführt und ein Testbericht erstellt werden. Sie können dies versuchen.
Sie können auch Spring Roo ausprobieren. Es ist ein RAD-Tool zum Erstellen eines Spring-basierten J2EE-Projekts.

Haylem
quelle