2008-12-22 10 views

Antwort

5

Während ich die Idee Idee von Maven mag, finde ich mich immer kämpfen für alles andere als die einfachsten Konfigurationen. Seine Architektur ist plugin-basiert und die Qualität der Plugins ist sehr unterschiedlich. Die Dokumentation ist bestenfalls skizzenhaft; die Hälfte der Zeit kann ich nicht herausfinden, ob das Dokument, das ich lese, für Maven 1 oder 2 ist. Und wie oft mussten Sie die maven-ant-plugin verwenden, um etwas Grundlegendes zu tun?

Ich habe mit Apache Ivy für etwa ein Jahr jetzt, und ich bin ziemlich glücklich mit ihm. Es gibt jedoch ein bisschen eine Lernkurve. Aber es gibt eine aktive Mailing-Liste, und der Autor ist sehr reaktionsschnell.

Was ich am Ende getan habe, war eine "Bibliothek" von ein paar einfache Ant-Ziele wie "auflösen", "kompilieren", "installieren" usw. zu schreiben, die Dinge in Standard Maven Orten erwarten (wie src/main/java)) und dann <import> die Ziele in meine verschiedenen Projekte. Auf diese Weise erhalten Sie das Beste aus beiden Welten - Konfiguration im Maven-Stil und die ganze Kraft von Ant.

4

Ich benutze gerne Ant mit Ivy. Ivy verwendet Maven-Repositories, um Bibliotheksabhängigkeiten abzurufen, ohne Sie dazu zu zwingen, Ihr gesamtes Build-System zu ändern, um es Maven anzupassen.

3

Ich habe buildr für einige meiner Projekte verwendet. Sehr knappe und lesbare Build-Skripte (kein xml) und es verwendet maven repos (mit trivialem Aufwand, Maven 1 und Maven 2).

Ich war auf der Suche nach etwas Post-Maven1 für einige Projekte zu arbeiten und m2 war nicht so ansprechend. Maven hatte bereits alle m1-Benutzer mit der Notwendigkeit verlassen, alle ihre Build-Systeme wieder herzustellen (und einige von mir können nicht in m2 ausgedrückt werden, soweit ich das beurteilen kann).

+0

Der einzige Weg zu gehen, XML (Ant) ist für die Aufgaben nicht passend wir tun wollen. Es ist überraschend, wie lange die Gemeinschaft es verstehen muss. – Denis

0

Ich würde mit buildr gehen, wenn ich komplexe Build-Ziele in meinem Build erwarte. Der Vorteil ist, dass Sie nicht auf eine bestimmte Bibliothek angewiesen sind. Sie haben alle APIs von Ruby, um zu tun, was Sie wollen; Im Gegensatz zu Ivy bist du immer noch an ANT gebunden. Der Aufwand der Migration zu Ivy lohnt sich, wenn Sie die Bibliotheksabhängigkeit in einen bereits etablierten ANT-basierten Erstellungsmechanismus einführen möchten, der alle Operationen ausführt, die Sie durchführen möchten.

0

Es gibt mindestens drei verschiedene Teile von Maven: das Repository, das implementierungsunabhängige Lifecyle und die Konventionen für ein Standardprojekt. Die Verwendung von Ivy bietet nur das Repository.

Ich habe es nicht, aber ich denke, dass easyant ist so konzipiert, ein vollständigere Ersatz Maven zu sein. Es verwendet Ivy als Repository, fügt dann aber Konventionen und Standardmodule hinzu.

+0

Ich habe EasyAnt faszinierend gefunden, aber ihre Dokumentation ist nicht so gut. Es sollte Targets vor allem Java und wie es mit Ant und Maven, die die größten aktuellen Spieler in Java sind, vergleicht. – Wernight

1

Ich mag mit ant4eclipse wirklich - setzen Sie Ihre Projektabhängigkeiten in Eclipse als normal und Sie können eine einzelne Ameise Skript schreiben, das alle Projekte in der richtigen Reihenfolge bauen werde.

Für Third-Party-Bibliotheken können Sie entweder ein einzelnes Eclipse-Projekt einrichten, das alle Ihre JAR-Dateien enthält (und exportiert) oder ein separates Projekt für jede Third-Party-Lib Krug. [Empfehle ich die letztere b/c Sie verfolgen projekt- können> Dritt deps und Teile aktualisieren, wenn nötig.]

8

Es hängt davon ab, was Sie sowieso verwenden. Maven 1? Maven 2? Ich finde Maven 2 anständig dokumentiert und ziemlich mächtig, wenn es in Kombination mit Ant-Aufgaben und einigen selbstgebackenen Java-Plugins verwendet wird.

Es gibt Ant-Aufgaben, um Maven-Funktionen von Ant: http://maven.apache.org/ant-tasks/index.html zu verwenden. Sie müssen also nicht wirklich Ihre eigene "Bibliothek" schreiben.

Und Sie können Ant von Maven anrufen: http://maven.apache.org/plugins/maven-antrun-plugin/.

Sie können auch Dinge mit Groovy scripten, zum Beispiel: http://groovy.codehaus.org/GMaven+-+Executing+Groovy+Code.

Oder schreiben Sie einfach Java-Code für die benutzerdefinierten Bits, die Sie benötigen: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html.

Es gibt keinen Grund, nicht zu mischen und anzupassen, wenn Sie es tun können;)

+0

(Kommentar hinzugefügt, damit ich mich an diese Antwort erinnern kann) +1 – toolkit