Ist Ant immer noch im "Mainstream" für Java-Builds?

14

Wir haben Batch-Kommandodateien (Windows .bat), die einfach die in der Entwickler-IDE kompilierten Klassen durch umfassendere Ant-Builds (z. B. Abrufen von CVS, Clean Compile, JAR, Archiv, E-Mail usw.) auflösten, langsam ersetzt.

Ich habe viel Zeit mit dem Erlernen (und Debuggen von Problemen) von Ant verbracht, daher kann ich es für diese Aufgaben am besten verwenden. Aber ich frage mich, ob Ant immer noch so verbreitet ist wie zu Beginn meines Lernprozesses, oder ob "die Welt sich weiterentwickelt hat", um etwas Neueres (und vielleicht etwas Glatteres) zu werden. (Ich habe angefangen, mehr Maven-Builds zu sehen, die ich zum Beispiel nie benutzt habe.)

Die praktische Bedeutung dieser Frage ist, ob ich neue Entwickler dazu dränge, Ant zu lernen , oder ob sie etwas anderes für Builds lernen sollten.

Ich bin nie zu neugierig auf die Trends, daher wäre es großartig, von anderen Java-Entwicklern zu hören, was sie für das beste Build-Tool halten und was sie für neue Entwickler lernen sollten.

Sam Goldberg
quelle
Lesen Sie alle Antworten unten und sie waren alle großartig! Vielen Dank für die Einblicke in die Verbesserungen, die Maven gegenüber Ant bietet. Ich werde Maven untersuchen.
Sam Goldberg
Es gibt nur sehr wenige Projekte, die so einfach sind, dass für ant nicht viele Skripte erforderlich sind. Maven handhabt viele dieser Dinge auf übliche Weise.
Ant ist im Grunde ein Shell-Skript in XML (und verwendet Ant-Befehle anstelle von Shell-Befehlen).
user253751
Ameise ist eine unglaubliche Zeitverschwendung. Selbst wenn Maven schrecklich war, war es eine klügere Wahl. Ant hat keine Möglichkeit, in eine IDE integriert zu werden, und Java-Projekte sind ein riesiges Durcheinander von Dateien - Sie verbringen 30% Ihrer Zeit damit, einfach von Datei zu Datei zu springen.
Bryan Hunt
@bryanhunt: Am Ende haben wir Maven für alle neuen Projekte verwendet. Allerdings habe ich für Maven keine gute Möglichkeit gefunden, ein Implementierungspaket für Java-Apps zu erstellen. (Es ist in Ordnung, Abhängigkeiten zu kopieren und JAR hochzuladen.) Die meisten Beiträge, die ich lese, beantworten die Frage, wie es geht, beispielsweise, um das Ant-Plugin zu verwenden. Also benutze ich Ant, um die endgültige Ausgabe von Maven zu optimieren. Und es scheint viel einfacher zu sein, dies in Ant zu tun, als das Maven Assembly-Plugin zu verwenden.
Sam Goldberg

Antworten:

23

Ich stimme anderen hier zu, dass Maven anscheinend die wichtigsten Projekte übernommen hat, die ich mir angesehen habe.

Während Ant hochflexibel ist, ist die Build-Datei nicht standardisiert. Wenn Sie also zu einem neuen Projekt oder Unternehmen wechseln, werden die Ziele anders benannt, die Datei ist anders strukturiert, die Abhängigkeiten zwischen den Zielen können hergestellt werden oder auch nicht.

Mit Maven haben Sie auch den Vorteil, dass Sie keine binären Abhängigkeiten (ich spreche von Jars) in Ihrem SCM-System haben müssen. Viele andere großartige Java-Tools können eine Maven-POM-Datei lesen (der Vorteil der Standardisierung), sodass Tools wie IDEs ein Maven-Projekt sehr schnell einrichten können und Build-Tools wie Jenkins problemlos Maven-Builds ausführen können.

RonU
quelle
13
Ich sollte auch hinzufügen, dass die Verwendung von Maven unsere Projekte IDE-agnostisch macht, und wenn Sie jemals in einem Geschäft waren, in dem IDE-Kriege stattfanden, können Sie es zu schätzen wissen, diesen religiösen Kampf zu eliminieren!
RonU
11

Ich habe mit Ant und mit Maven gearbeitet. Nach meiner Erfahrung hat Maven einen sehr starken Rand über Ant.

  • Alle Projekte, die ich in den letzten 2 oder 3 Jahren gesehen habe, scheinen maven zu benutzen. Vor ungefähr 3 Jahren hat mich das gewundert, weil die damals verwendeten Maven-Versionen (2.0.something) ziemlich unzuverlässig und fehlerhaft zu sein schienen. Irgendwann jedoch (2.1 oder 2.2, an die ich mich nicht erinnere) wurde Maven zuverlässig und nach einiger Zeit habe ich es mir anders überlegt. Jetzt wäre ich eher überrascht, jemanden zu sehen, der Ameise gegenüber Mabe bevorzugt.

Was Maven betrifft, so waren meine Erfahrungen mit der Dokumentation bisher nicht so gut. Ich glaube, ich habe ein Produkt gesehen, dessen Dokumentation schlechter ist als die von Maven, aber ich kann mich nicht erinnern, welches (eine alte CSV-Bibliothek iirc).

Mücke
quelle
2
Keine Ahnung, ich fand die Maven Reference ganz anständig. Es ist nicht perfekt und es gibt dunkle Ecken ohne Papiere, aber IMHO ist es immer noch deutlich besser als der Durchschnitt.
Péter Török
@ PéterTörök rechts Maven Reference ist auch meine erste Hilfe. Irgendwie endet das meiste, was mich beunruhigt, in diesen dunklen undokumentierten Ecken . Um genau zu sein, finde ich diese Ecken "dunkler" als "undokumentiert" - ich meine, ich habe das Gefühl, dass das Wissen da ist, aber ich kann es nicht entziffern. Ich weiß nicht, vielleicht habe ich Pech. Oder vielleicht dumm. Oder vielleicht Maven Jungs fehlen nur einen anständigen Tech - Schriftsteller in ihrer Bande
gnat
1
Warum haben Sie jemals ein Open - Source - Projekt gesehen , das hatte einen anständigen Tech - Schriftsteller? ;-)
Péter Török
@ PéterTörök so wahr! :) Der Luxus populärer OSS-Projekte ist, dass es viele Experten gibt, die den Dokumentationsschreiber "ersetzen". Für mich war das bei Maven der Fall - es gab immer einen Guru, um den ich mich nach schwierigen Dingen
erkundigen
3

Wir verwenden Maven seit mehreren Jahren. Es unterstützt Ant-Scripting (genau wie Ant BeanShell), sodass Ihre Ant-Kenntnisse möglicherweise weiterhin nützlich sind. Maven ist viel leistungsfähiger, hat jedoch einige zusätzliche Infrastrukturanforderungen (Sie möchten, dass ein Artifactory- oder Nexus-Server Ihre Builds hostet, wenn Sie Komponenten für mehrere Projekte freigeben). Es ist auch ganz anders als Ant, so dass Sie nicht viel von Ihrem vorhandenen Wissen nutzen können.

TMN
quelle
1

Ich denke, Ant allein ist tot im Wasser; Es ist viel zu manuell und viel zu fehleranfällig, alle Klassenpfadabhängigkeiten manuell angeben zu müssen (abhängig von Ihrer Konfiguration). Wenn Ant zusammen mit einem Abhängigkeitsverwaltungstool wie Ivy verwendet wird, behält es seine Leistungsfähigkeit und macht die manuelle Verwaltung Ihrer Abhängigkeiten überflüssig.

Das andere Problem bei Ant im Vergleich zu Maven ist der Mangel an Standardisierung, der in anderen Antworten erwähnt wurde. Wenn ich von Projekt zu Projekt oder Job zu Job gehe, ist es eines der nervigsten Dinge, den neuen Standard für verschiedene Ant-Dateien zu lernen. Mavens Ziel der Konvention über die Konfiguration bedeutet, dass zwei verschiedene Projekte eine sehr ähnliche Struktur haben und der Übergang zwischen ihnen viel einfacher ist als mit Ant.

Ob Ant noch Mainstream ist oder nicht, hängt von der Entwicklungsumgebung ab, in der Sie arbeiten. Wenn sich das Projekt in einem kleinen Unternehmen oder einem Start-up befindet, würde ich mir vorstellen, dass Maven die natürliche Wahl ist und Zeit in Anspruch genommen werden kann in die Infrastruktur zu investieren, wie ein Artifactory. Große Unternehmen werden jedoch viele Jahre und viel Geld in ihre Ant-Infrastruktur (Konfigurationen, globale Build-Dateien usw.) investiert haben, was bedeutet, dass sie weniger daran interessiert sind, sich von einer Technologie zu entfernen, in die sie so viel Geld investiert haben.

Richard
quelle
0

Maven ist seit vielen Jahren auf dem Vormarsch, und jetzt muss ich es lernen. Die Dinge werden sich immer ändern, und zu wissen, dass Ant seine Position verliert, ist keine schlechte Sache.

Maven ist vielleicht nur für kurze Zeit auf dem Vormarsch, aber wenn es uns die Arbeit erleichtert, lohnt es sich, die Zeit zum Lernen zu investieren.

Jon Shanks
quelle