Frage

Ich bin wirklich müde zu kämpfen, mit Maven 2 die ganze Zeit. Build-Tools sollen nicht im Weg sein. Vor kurzem wurde ich Buildr und Gradle suchen. Maven 3 scheint einige der Kämpfe zu beheben. Also, was soll ich gehen jetzt? Buildr? Gradle? Oder warten Sie ein Jahr für Maven 3?

War es hilfreich?

Lösung

Kein Build-System ist eine magische Kugel. Ich finde Maven mehr Probleme lösen, als es für mich verursacht, aber ich bin ziemlich komfortables Schreiben Plugins um ihre Mängel zu bekommen, habe ich auch mit Hunderten von Projekten beschäftigen, so Maven Vererbung und Abhängigkeit Verarbeitung ist sehr hilfreich für mich.

Sie sehen ein bisschen so, und Sie werden sehen, Buildr und Gradle haben beide Fragen zu (gleich für Ant und Ivy), in der Regel werden Sie eine Reihe von Problemen für andere handeln und es ist ein Fall von den am wenigsten schmerzhafte finden.

Gibt es etwas Bestimmtes, das Sie über Maven oder ist es eine allgemeine Juckreiz stört? Wenn es ein besonderes Problem ist, ist es lohnt ein Blick auf die Maven 3 Ausgaben auf Jira , wenn das Problem nicht angesprochen wird, können Sie es heben kann, sonst kann es wenig Sinn in dir

Warte

Andere Tipps

Ich würde nicht zu viel erwartet von Maven 3. Die Menschen hinter dem Maven Stammbaum von Build-Tool haben die Annahme immer entschieden, dass Projekt baut sind homogen, das heißt: alle bauen grundsätzlich Probleme laufen auf das gleiche Problem. Diese Sicht der Welt kann angesichts der gegensätzlichen Ansichten ziemlich konsequent gehalten werden, sondern kommt zu einem Preis. Das Fehlen von Skriptlogik in Maven ( „wenn Sie wollen Skript, das Sie wissen, dass Sie etwas falsch zu machen“), die umständliche Plugin API ( „kein gewöhnlicher Maven Benutzer sollte ein Plugin schreiben will“) und das zentrale Repository ( "wir alle haben die gleichen Abhängigkeiten ") alle Testamente dieser allumfassende Annahme sind.

In der realen Welt bauen Probleme heterogen sind, weil die Menschen Software für eine Vielzahl von Gründen bauen. Sie alle ‚entwickeln‘, wie wir alle ‚Bohrlöcher‘ hin und wieder für die Lösung einzigartige Probleme. Unabhängig von Ihrer Abstraktionsebene werden Sie immer Ähnlichkeiten finden, wenn beliebige Probleme mit dem Build zu vergleichen. Es ist die reveration dieser Ähnlichkeiten und die Verurteilung der Unterschiede, die den Untergang für Maven Design ist und der Grund, warum es so viel Flak zieht. Grundsätzlich Maven ist autoritär und utopisch in seinem Ausblick.

PS:. Maven hat gute Eigenschaften, wie Convention-over-Konfiguration und die Idee der Verwendung von Repositories (die Maven Umsetzung dieser Idee ist mühsam)

Wir verwenden Maven hier, aber ich finde, dass, wenn Sie außerhalb eines einfachen Projekts erhalten, die pom.xml immer komplexer zu bekommen beginnt. Sie starten eine Menge Zeit ausarbeitet verbringen, wie alles in der Welt Ihre pom zu konfigurieren zu tun, was Sie wollen, und wie um die verschiedenen Themen zu arbeiten.

Die Sache, die wirklich hat mich war das Ohr wir bauen. Wir haben mehrere Kriege in dieser Ohr-Datei, und Maven kleben normalerweise die Bibliotheken in den Kriegen. Um jedoch die Größe der Kriege zu reduzieren, und die Gläser zu halten alle das gleiche, wir die Gläser geteilt zwischen den Kriegen in das Ohr des lib.

setzen wollte

Leider Maven nicht damit umgehen sehr gut. Wir mussten manuell diese Poms jeder des Krieges für konfigurieren und dann all diese Abhängigkeiten in das Ohr des pom hinzuzufügen.

In einem anderen Projekt, das wir HTML-basierte Hilfe-Dateien. Die Menschen, die die Hilfe schreiben, schreiben sie in Microsoft Word dann ein Programm verwenden, um sie in HTML zu übersetzen. Ein einzelnes Zeichen verändern sich über Hunderte von Dateien nachhallen kann.

Um dieses Problem zu bekommen, unser Hilfesystem ist in unserem Quellrepository als eine einzige ZIP-Datei gespeichert. Wenn unser Dokumentationsteam eine neue Reihe von Hilfe-Dateien erstellt, zip sie es auf und ersetzen, was im Repository ist.

So, ein Teil meiner Build ist diese Datei entpackt und in den Krieg stellen. So einfach in Ant zu tun, kann es in Maven nicht tun, wenn Sie die Antrun Plugin verwenden, die Sie Ant-Code zu behandeln Probleme, die Maven nicht umgehen können, ohne eine vollständige geblasene Plugin.

schreiben erlaubt

kann ich sehen, was Maven tut, aber Theorie bekam vor der Wirklichkeit. Was ich fand, ist, dass Ivy und Ant können die meisten der Abhängigkeit tun Überprüfung, dass Maven tut, ohne all die Probleme des Schreibens und die Aufrechterhaltung der Poms.

Wenn Sie nicht bereits Maven verwenden, versuchen Sie Ant mit Ivy zuerst. Dann, wenn Maven 3 herauskommt, versuchen. Ich erinnere mich an den Übergang von Maven 1 auf Maven 2. Sie waren völlig unvereinbar miteinander und alles, was Sie gelernt mit Maven 1 war veraltet. Es wäre dumm, zu lernen und wiederholen Sie Ihre Projekte in Maven 2 sich plötzlich alles 3 für Maven redoing zu finden.

Maven 3.x ist bereits in IDEs eingebettet (zumindest auf Netbeans, überprüfen Link für mehr infomration). Sie können heute mit Maven 3.x einfach den Aufbau einer Maven-Projekt mit Netbeans spielen.

Eine weitere schöne Nachricht ist, dass Maven mit Integration von EJB / WS in IDE-Projekten mehr 'Unternehmen' Unterstützung bekam (wieder, zumindest auf Netbeans).

So würde ich Stick 2.x für die Produktion Maven baut und mit Maven 3.x für die Entwicklung spielen.

Maven 2 und 3 haben beide auf einer Vielzahl von Projekten perfekt für mich gearbeitet. Ich bin derzeit mit Maven 3 alpha 7, das funktioniert sehr gut, vor allem in Verbindung mit der Eclipse Maven Plugin.

Maven integriert mich nahtlos in Ant - in beiden Richtungen. In meinem aktuellen Projekt, rufen wir Maven von Ant mehrere Male, um komplexe Integrationstest durchzuführen. Ebenso nutzen wir Ant über Maven AntRun Plugin, und wir auch unsere eigenen Maven Plug-in geschrieben. Das, nebenbei bemerkt, ist eine Sache von Minuten und läuft darauf hinaus, eine kommentierte Pojo zu schreiben.

Maven bekommt viel Kritik, weil viele Entwickler nicht mag Regeln oder Konventionen. Ganz einfach, niemand drängt Sie Maven zu verwenden. Wenn Sie ultimative Freiheit wollen - mit allen Mitteln - neu schreiben Sie Ihre eigenen Build-Prozess für jedes Projekt, das Sie verbinden. Allerdings, wenn Sie möchten Software erstellen, anstatt neu zu erfinden das Rad mit einem maßgeschneiderten Build-Prozess auf jedem Projekt, gehen Sie für Maven.

Halten Sie Ihren Code gut gepflegt und gebrochen in gut definierten Modulen und wird ein kleines Problem zwischen Build-Systeme portieren.

Wie jetzt, Maven-2 ist eine gute Wahl für den mittleren 2 / 3. von Projekten. Für die wirklich einfach ist, Ameise noch ok. Für die wirklich komplex, ein Hybrid aus Maven-2 und anderen Werkzeugen (wie antrun) unvermeidlich.

Nicht sicher, warum Sie Probleme mit Maven-2 haben.

Es unterscheidet sich von Ameise und Buildr, dass es sich um ein Werkzeug, um Ihre Build-Prozess für die Beschreibung, nicht scripting. Complex wird, diejenigen mit mehreren dynamischen Teile und verschachtelte und / oder transienten Abhängigkeiten sind schwer zu bauen, weil sie schwer zu beschreiben sind.

Geben Sie Lattice https://github.com/hackingspirit/Lattice versuchen. Ich bin der Autor. Hier ist die Schaufel:

In Lattice-Build-Dateien geschrieben werden nicht in XML, aber in der Sprache Python. Die Vor- teile sind viel bessere Lesbarkeit und leistungsfähiger zwingend notwendig Build Scripting von Python unterstützt. Für Multi-Modul-Projekte. Lattice verwendet topologische Sortierung die richtige Reihenfolge zu entscheiden, jedes Modul zu bauen. Es ist auch geplant, dass Lattice wird die Modul Abhängigkeit analysieren, um zu bestimmen, wie das Modul Kompilation parallelisiert werden kann. Lattice-Quellcode ist extrem schlank, zur Zeit besteht sie aus etwa 500 Zeilen Python-Quellcode.

Ich denke, die Leute über Maven beschweren sollte ein wenig mehr Zeit zu untersuchen verfügbaren Plugins verbringen. In Reaktion auf die Kommentare beschweren, dass Maven starr und macht es schwer Logik benutzerdefinierte bauen verwenden / bieten eine fein abgestimmte Kontrolle über den Build-Prozess - ich würde empfehlen, sich in Ant-Plug-in für Maven (es gibt tatsächlich mehrere vorhanden sind, aber hier ist ein : http://maven.apache.org/plugins/maven-antrun-plugin). Ich habe großen Erfolg hatte Customizing Maven damit im Laufe der Jahre baut. Grundsätzlich ist es erlaubt Ihnen, jeden Ant-Befehl als Teil des Maven Build zu laufen, und Sie können mit Ant so ziemlich alles tun;)

Ant mit Ivy hat die gleiche Abhängigkeitsmanagement Maven tut (in der Tat, es Maven nutzt gesamte Abhängigkeitsmanagement-Infrastruktur einschließlich der gleichen URL-Repositories), aber ohne all die POM-Konfiguration Chaos.

Ant mit Ivy könnte ein Weg der Umgang mit den Abhängigkeitsprobleme für Menschen, die wirklich nicht wollen, Maven verwenden. Es löst 90% der Sachen, die Maven war wohl zu lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top