2009-03-29 11 views
5

Ich habe versucht zu verstehen, wofür Ant verwendet wird, aber ich verstehe es immer noch nicht.Wie Ant verwenden?

Kann jemand mir einen Anwendungsfall geben, für den Ant verwendet wird, etwas, das ich versuchen kann zu sehen, warum Ant nützlich ist und welche Art von Dingen ich dafür verwenden kann?

Ich mache Java-Entwicklung in Eclipse und ich beginne gerade mit Servlets und Google Web Toolkit.

+1

effektiv ein Duplikat http://stackoverflow.com/questions/610732/what-is-build-automation-software-for-example-ant –

+0

(In, dass die Antworten auf diese Frage direkt diese Frage beantworten.) –

Antwort

17

Ant ist ein Build-Tool. Angenommen, Sie haben mehrere Projekte in Ihrem Eclipse-Arbeitsbereich, die alle Teil einer größeren Anwendung sind. Um alles in eine JAR-Datei mit Abhängigkeiten zu integrieren, könnten Sie alle Projekte auswählen und sie als JAR-Datei exportieren, aber das ist etwas umständlich.

Ant ist eine erweiterbare Lösung. Sie definieren den Build-Prozess in XML und ant kompiliert Ihre Java-Dateien nach diesem Rezept.

Ant kann mehr als nur bauen. Ich arbeitete in einem Unternehmen, in dem der Mechanismus für die Bereitstellung Debian-Pakete in unserem eigenen Repository war. Wir hatten Ant-Skripte, die die JAR-Dateien erstellen, sie und einige Metadatendateien in einem Debian-Paket anordnen, sie in das Repository stellen und das Repository-Manifest neu generieren.

Wie bei allem Java gibt es viele Konfigurationsmöglichkeiten, die man braucht, um sich mit Ant vertraut zu machen, aber einige der grundlegenden Tutorials sollten Ihnen eine Vorstellung davon geben, in was Sie sich gerade vertiefen.

4

Ant wird, wie jedes Build-Tool, verwendet, um die sich wiederholenden Aufgaben beim Erstellen Ihres Codes zu automatisieren.

Anstatt javac jedes Mal von Hand auszuführen, setzen Sie einen Befehl in ein Ant-Skript und dann, wenn Sie ant laufen lassen, wird javac für Sie laufen.

Mein typischer Build-Prozess mit Ameise geht ungefähr so:

  • Lauf javac auf der Quelle
  • läuft javac auf dem tets
  • die cobertura Instrumentierung an der Quelle laufen (dies ist für Codeabdeckung die Klassen aus der Quelle
  • jar bis die cobertura instrumentierten Klassen
  • jar bis die u)
  • jar up Nit Testklassen
  • Lauf check, pmd, findbugs auf der Source-Warnungen zu finden
  • die Unit-Tests über cobertura laufen Code-Coverage von ihnen

Damit ist 8 Schritte zu bekommen, die ich auf jeder getan haben bauen, dass ich einfach mit "ant" ausführen kann.

2

Ant ist eine XML-basierte Make-Datei.

Wenn Sie ein einzelner Entwickler sind, der bereits Code erfolgreich mit einer IDE wie Eclipse erstellt und verpackt, werden Sie mit Ant kaum Vorteile sehen.

Der größere Vorteil kommt, wenn Sie ein Team haben, das an Code mitarbeitet. Dann erhalten Sie einen großen Schub, wenn Sie Cruise Control oder eine andere kontinuierliche Integrationsmöglichkeit nutzen. CC benötigt eine Ant build.xml.

0

Dies ist aus der ANT-Dokumentation und erklärt es ziemlich gut.

Warum noch ein Build-Tool, wenn es schon machen, gnumake, nmake, Marmelade, und andere? Weil alle diese Werkzeuge Beschränkungen haben, die der ursprüngliche Autor der Ant mit Software über mehrere Plattformen nicht leben konnte. Make-like-Werkzeuge sind inhärent shell-based: sie bewerten eine Reihe von Abhängigkeiten, dann führen Sie Befehle nicht anders als, was Sie auf eine Shell ausgeben würden. Dies bedeutet, dass Sie einfach diese Tools erweitern können, indem Sie ein beliebiges Programm für das Betriebssystem, das Sie bearbeiten, verwenden oder schreiben; Dies bedeutet jedoch auch , dass Sie sich auf das Betriebssystem beschränken, oder mindestens den Betriebssystemtyp wie Unix, , an dem Sie arbeiten.

Makefiles sind von Natur aus auch böse. Jeder, der an ihnen für jede Zeit gearbeitet hat, ist in den gefürchteten Tab Problem gerannt. "Führt mein Befehl nicht aus, weil ich einen Platz vor meiner Registerkarte habe? !!" sagte der ursprüngliche Autor von Ant viel zu oft. Werkzeuge wie Marmelade kümmerten sich um einen großen Grad, aber noch ein anderes Format zu verwenden und erinnern.

Ant ist anders. Anstelle eines Modells , in dem es um Shell-basierte Befehle erweitert wird, wird Ant um Java-Klassen erweitert. Anstatt Shell Befehle zu schreiben, sind die Konfigurationsdateien XML-basiert, Aufruf eines Zielbaums wo verschiedene Aufgaben ausgeführt werden. Jede Aufgabe wird von einem Objekt ausgeführt, das eine bestimmte Task Schnittstelle implementiert.

Zugegeben, das entfernt einige der Ausdruckskraft, die in der Lage inhärent ist eine Shell Befehl wie find . -name foo -exec rm {} zu konstruieren, aber es gibt Ihnen die Möglichkeit, Cross-Plattform zu sein - überall zu arbeiten und überall . Und hey, wenn Sie wirklich eine Shell Befehl ausführen müssen, Ant hat eine Aufgabe, die ermöglicht verschiedene Befehle ausgeführt basierend auf dem Betriebssystem ausgeführt werden, es ist Ausführen auf.