Ich denke daran, Maven zu lernen

8

Ich habe ein Nebenprojekt, das ich in Java mache. Es ist eine ziemlich unkomplizierte Webapp. Es läuft in Tomcat auf einem Linux Server und benutzt eine MySQL Datenbank. Der Großteil des Codes wurde mit dem Spring Framework geschrieben. Es hat eine Menge Unit Tests vorhanden. Wenn ich kodiere, ist es in Eclipse. Wenn ich die Anwendung austrage, führe ich ein paar Shell-Skripte aus, um eine WAR-Datei auf den Webserver zu verschieben, Datenbank-Updates durchzuführen und Änderungen an Apache-Konfigurationen vorzunehmen. Ich bin der einzige Entwickler, der daran arbeitet, und momentan wird es nur in einer Umgebung (Produktion) bereitgestellt, obwohl ich eines Tages vielleicht auch eine Test- oder Staging-Umgebung haben möchte. Ich verwende die SVN Versionskontrolle über das Eclipse Plug-in.

Ich höre immer von Leuten, die Maven für ihre Projekte benutzen. Da so viele Leute es benutzen, sage ich mir, es muss gut sein. Ich würde es gerne in meiner Freizeit lernen. Das einzige Ding ist, dass ich nicht ganz verkauft werde, warum ich Maven benutzen möchte? Klingt mein erster Absatz wie ein für Maven geeignetes Projekt? Hat es bestimmte Vorteile für ein Projekt, das mit einer Datenbank interagiert?

    
bpapa 29.12.2008, 19:08
quelle

10 Antworten

4

Ihr Projekt klingt nicht wie ein für Maven geeignetes Projekt. Sie scheinen eine funktionierende Entwicklungsumgebung zu haben. Warum einen anderen einrichten? Es wird Ihnen nur eine weitere Projektdatei zur Verfügung stellen, die den guten alten DRY -Prinzip unterbricht.

    
Arne Evertsson 19.09.2008, 22:15
quelle
11

Maven wäre eine gute Wahl für Ihr Projekt IMO. Maven ist ein umfassendes Build- und Deployment-Management-Tool. Die größte Stärke ist, dass Build-Skripte wesentlich leichter zu pflegen sind als funktional vergleichbare Ant-Dateien oder Shell-Skripte.

Es gibt eine Menge Vorteile gegenüber der Verwendung von Maven, da es die Präferenz der Konvention gegenüber der Konfiguration ist. Dies bedeutet, dass wenn Sie Ihr Projekt mit der Maven-Verzeichnisstruktur angelegt haben, fast keine Konfiguration erforderlich ist, um die JUnit-Tests zu erstellen und auszuführen.

Der andere große Gewinn, den Maven Ihnen gibt, ist das Abhängigkeitsmanagement. Sie können die Abhängigkeiten Ihres Projekts deklarativ in der Konfigurationsdatei von Maven namens Project Object Model (POM) definieren und Maven erledigt die Aufgabe, alle jars in einer lokalen Verzeichnisstruktur zu speichern, die es verwaltet. Im Fall von öffentlich verfügbaren Artefakten werden die Gefäße automatisch aus dem zentralen Maven-Repository heruntergeladen und im Fall von internen oder proprietären 3rd-Party-Gefäßen können Sie sie mit einem einzigen Befehl in Ihr Repository installieren.

Neben der Organisation dieser Artefakte und der automatischen Einrichtung Ihres Build-Klassenpfads mit allen erforderlichen JAR-Dateien verwaltet maven auch Abhängigkeitshierarchien. Das heißt, wenn Ihr Projekt von jar A und A von jar B abhängt, wird jar B automatisch mit Ihrem WAR gebündelt, obwohl Sie es nicht explizit als Abhängigkeit in Ihrer Build-Konfiguration auflisten.

Ich werde auch vom Standpunkt der professionellen Entwicklung aus sagen, dass es sinnvoll ist, Maven zu lernen, da Maven meiner Erfahrung nach Ant als de jure-Tool der Wahl sowohl in Open-Source- als auch in proprietären Java-Projekten übernommen hat.

Wenn Sie ein Build-System haben, das schnell und zuverlässig für Sie ist, dann ist es vielleicht nicht den Aufwand wert, auf Maven umzusteigen, nur um das gleiche Werkzeug zu verwenden, das auch alle anderen haben.

    
Mike Deck 19.09.2008 20:36
quelle
8

Maven wäre gut für das, was du machen willst. Anders als die meisten Build-Tools verwendet Maven Konventionen (besser, als viele andere zumindest) und es hat "Plugins" für jeden Bereich, den du erwähnt hast:

Komponententests: maven todsichere Plugin

Eclipse-Integration: m2eclipse

Bereitstellen der WAR-Datei: WAR-Plugin und Deploy-Plugin

Maven kann Ihnen auch bei Integrationstests auf Tomcat helfen (wenn Sie welche haben), da Sie einen Krieg mit dem Cargo-Plugin .

Jedenfalls, wenn Sie in Ihrer Freizeit lesen möchten, hier ist ein kostenloses Buch (PDF-Format): Maven der endgültige Leitfaden

Ich hoffe, es hilft!

    
Pablo Fernandez 19.09.2008 20:57
quelle
6

Ich benutze Maven im Zorn bei der Arbeit. Es ist eine strenge Geliebte. Es macht die Dinge einfach, solange du Dinge machst, die viele andere Leute haben, und das ist wichtig, solange du sie so machst, wie die Leute denken, du solltest sie tun. Trete von diesem schmalen Pfad ab und es wird dich bei jedem Schritt des Weges bekämpfen.

Ich war beeindruckt von BuildR , weil ich es auf der Seite benutzt habe. Es ist flexibel wie ANT und nutzt das Abhängigkeitssystem von Maven. Auch ist es in der Inkubation, also ist es ein wenig rau an den Rändern.

    
sblundy 19.09.2008 20:33
quelle
4

Ich habe einmal einen neuen Job gestartet, der Maven benutzt. Verbrannte 2 Tage und versuchte herauszufinden, wie ihr Aufbau funktioniert. Es stellte sich heraus, dass alle maven 1.01 unter Windows verwendeten und ich versehentlich versucht hatte, auf 1.02 aufzubauen, also funktionierte es nicht für mich. Niemand an dem Ort wusste, wie es funktionierte, und sie hatten es seit Monaten benutzt und sie waren damit zufrieden. Ein paar Monate später musste ich beim selben Projekt tief in die Jelly-Skripte eindringen, um eine einzige Build-Variable zu ändern. Es hat keinen Spaß gemacht.

Als ich anfing, es zu benutzen, las ich "Konvention über Konfiguration" und "verwendet einen Standardsatz von Verzeichnissen". Diese waren nirgends, was ich in den Dokumenten finden konnte. Ich nehme an, du solltest es erraten.

Meine Meinungen:

  • Jedes Werkzeug, das Sie verwenden, das Sie nicht vollständig verstehen, ist ein Fehler und ein potenzieller Anker für Ihren Entwicklungsprozess. Wenn das Werkzeug wirklich, wirklich kompliziert ist, ist es wahrscheinlich, dass Sie die einfachsten Teile davon verwenden, anstatt es zu beherrschen. Wenn Sie die leistungsstärksten Teile des Tools nicht verwenden oder abschrecken, vereiteln Sie wahrscheinlich den Verwendungszweck.
  • Maven ist ein klassisches Beispiel für etwas, das so voll von automagischer Güte ist, dass du keine Ahnung hast, was es tut, es sei denn, du widmest viel mehr Zeit, als ein Bauwerkzeug verdient, um ein Maven-Maven zu werden. Eine überentwickelte Lösung auf der Suche nach einem Problem.
  • Ich habe keine Fälle von Dingen gefunden, die ich tun musste, die ich nicht mit Ameisen machen konnte und die ich brauchte. Ich weiß, dass es welche gibt, ich brauchte sie nie. Wenn ich das täte, wäre ich wahrscheinlich wohltätiger in Bezug auf den Aufwand, der erforderlich ist, um mit Maven umzugehen.
  • Es macht Ihren Build abhängig vom Internet. Es ist nicht unüblich, jetzt ein kleines Projekt herunterzuladen, mvn laufen zu lassen und maven 10 Plugins herunterzuladen, bevor es überhaupt anfängt zu bauen, was du überhaupt bauen willst. Was macht es? Keine Möglichkeit wirklich zu wissen, aber du solltest besser hoffen, dass es nicht kaputt geht. Wenn es scheitert, machen die Komplexität des Fehlers und die angehäuften Schichten von Abhängigkeiten es im Wesentlichen hoffnungslos zu debuggen. Ich verstehe nicht, warum dies in irgendeiner Weise eine Verbesserung gegenüber einfacheren Build-Tools oder sogar aus irgendeinem Grund wünschenswert ist.

Zusammenfassend ist es fast magisch, außer dass es, wenn es nicht funktioniert, wahrscheinlich keine Ahnung hat warum. Das scheint ein schlechter Kompromiss zu sein. Das war, um fair zu sein, vor ein paar Jahren. Ich weiß, dass ich unfreundlich bin, und es wurde in späteren Versionen verbessert (die ich auch verwendet habe). Trotzdem habe ich es gehasst (können Sie es mir sagen?)

    
Steve B. 16.12.2008 22:21
quelle
3

Wir machen genau das, was Sie in unseren Projekten tun, und wir verwenden maven. Sie möchten Maven verwenden, um ein standardisiertes Layout und die Möglichkeit zu haben, Ihr Projekt zu erstellen. Sie müssen nie alle diese Jar-Abhängigkeiten in SVN speichern oder sie irgendwo anders halten, Maven macht das für Sie. Maven dient auch dazu, andere Entwickler dazu zu bringen, Ihr Projekt einfach zu verstehen. Sobald Sie anfangen, es zu benutzen, werden Sie nie mehr zurückblicken wollen:)

    
neu242 19.09.2008 20:33
quelle
2

Abgesehen von der Tatsache, dass viele oss-Projekte Maven verwenden (oder konvertieren) und einige Closed-Source-Projekte auf Maven umstellen, profitiert Ihr Projekt NICHT unbedingt von Maven.

Wenn Sie jedoch darüber nachdenken, Open Source zu verwenden, können die Benutzer Ihres Projekts von Ihrem Projekt profitieren, das Maven einsetzt.

Einige der wichtigsten Vorteile von maven (jar-Abhängigkeiten) können mit efeu ( Ссылка ) erreicht werden.

Andererseits, da Sie anscheinend angeben, dass Sie der einzige Entwickler sind. Wenn Maven nicht für Sie arbeitet, können Sie schnell zurückkehren.

BR,
~ A

    
anjanb 19.09.2008 22:33
quelle
1

Nicht. Sehen Sie, was andere Leute sagen und forschen Sie sorgfältig. Betrachten Sie auch einige meiner anderen Kommentare zu Maven hier auf SO.

    
Rob Williams 16.12.2008 21:48
quelle
0

Ich habe Maven vor einiger Zeit für das Dependency Management verwendet, weil ich es satt hatte, alle Gläser hinzuzufügen, wenn ich es auf einer anderen Box testen wollte. Du musst es dafür nicht wirklich lernen, es dauert nicht lange, bis du es lernst.

Am einfachsten wäre es jedoch, jemanden zu fragen, der mvn bereits kennt, damit er Ihnen zeigen kann, wie es funktioniert, und dann lernen Sie es schnell.

    
Nils 16.12.2008 22:12
quelle
0

Eine der großen Stärken von Maven ist, dass es viel vom Build / Dependency-Management übernimmt, ohne dass Sie Build-Skripte schreiben oder Ihren Build-Prozess beschreiben müssen. Sie haben bereits Ihr Projekt-Setup, so dass Sie nicht von Maven profitieren, wenn Sie die Projekt-Shell für Sie einrichten oder die von Ihnen angegebenen Abhängigkeiten herunterladen, ohne dass Sie sie einzeln herunterladen müssen. Wenn Ihr Ziel darin besteht, zu lernen, Maven zu benutzen und zu verwalten, dann wird es für ein Projekt wie dieses, wo es keine anderen Entwickler gibt und der Build-Prozess sehr einfach ist (was ich sagen kann), auch nicht viel helfen. Daher würde ich empfehlen, Maven nicht für das bestehende Projekt zu verwenden.

Ich würde jedoch eine einfache Testanwendung ähnlich wie bei Ihnen mit Maven einrichten und diese mit der Projektstruktur vergleichen, um zu sehen, ob Sie den Best Practices folgen (zumindest für die Maven-Entwickler) und ob Ihre Anwendung den Standardkonventionen für Webanwendungen entspricht.

    
neesh 16.12.2008 23:10
quelle

Tags und Links