Was ist Ant?
Apache Ant ist ein Java-basierter Generationstool. Laut dem ursprünglichen Gründer James Duncan Davidson ist der Name dieses Tools das Akronym eines anderen ordentlichen Tools.
Was für eine Ameise macht:
Generierungstools werden in der Softwareentwicklung verwendet, um den Quellcode und andere Eingabedateien in ausführbare Dateien (und möglicherweise für installierbare Produktbildformate) umzuwandeln. Wenn der Prozess der Anwendungsgenerierung komplexer wird, wird es noch wichtiger, sicherzustellen, dass die genauen Erzeugungsschritte während jeder Generation verwendet werden, während gleichzeitig die Automatisierung wie möglich erreicht wird, um konsistente Versionen der Generation rechtzeitig zu erzeugen.
Vorteile von Ant:
Ant ist ein Java-basierter Build-Tool. Theoretisch ist es etwas ähnlich wie in (UNIX) C, hat aber keine Fehler. Die neueste Version ist: Ant 1.8.4. Warum brauchen wir ein neues Build -Tool, da wir bereits gemacht haben, Gnumake, Nmake, Jam und andere Build -Tools haben? Da der ursprüngliche Autor von Ameisen die Einschränkungen und Unannehmlichkeiten dieser Tools bei der Entwicklung von Software auf mehreren Hardware -Plattformen nicht tolerieren kann. Make-ähnliche Tools sind im Wesentlichen Shell-basiert: Sie berechnen Abhängigkeiten und führen dann Befehle aus (diese Befehle unterscheiden sich nicht wesentlich von den Befehlen, die Sie in die Befehlszeile eingeben). Dies bedeutet, dass Sie das Tool problemlos erweitern können, indem Sie osspezifische oder neue (Befehls-) Programme schreiben. Dies bedeutet jedoch auch, dass Sie sich auf bestimmtes Betriebssystem oder bestimmte Betriebssystemtypen wie UNIX beschränken.
Ameise ist anders. Im Gegensatz zum Erweiterungsmodus basierend auf Shell -Befehlen verwendet ANT Java -Klassen, um sich zu erweitern. (Benutzer) Es ist nicht erforderlich, Shell -Befehle zu schreiben. Die Konfigurationsdatei basiert auf XML. Verschiedene Aufgaben können ausgeführt werden, indem Sie den Zielbaum aufrufen. Jede Aufgabe wird von einem Objekt ausgeführt, das eine bestimmte Task -Schnittstelle implementiert.
ANT definiert die Abhängigkeiten zwischen generierten Dateien, die plattformübergreifende Java-Klassen verwenden. Mit ANT können Sie eine einzelne Generatordatei schreiben, die konsequent auf jeder Java -Plattform arbeitet (weil Ant selbst in der Java -Sprache implementiert ist), was der größte Vorteil von Ant ist
Ant generiert Dateianalyse:
Ant definiert seine eigene Syntax nicht; Stattdessen sind die generierten Dateien in XML geschrieben. Es gibt eine Reihe vordefinierter XML -Elemente, die Ant verstehen kann, und neue Elemente können auch definiert werden, um die Funktionalität von Ameisen zu erweitern. Jede Build -Datei besteht aus einem einzelnen Projektelement, das wiederum ein oder mehrere Zielelemente enthält. Ein Ziel ist ein definierter Schritt im Erzeugungsprozess, der eine beliebige Anzahl von Vorgängen ausführt, z. B. das Kompilieren einer Reihe von Quelldateien. Und diese Operationen selbst werden von anderen dedizierten Task -Tags ausgeführt, und dann werden diese Aufgaben nach Bedarf in einzelne Zielelemente eingeteilt. Alle für einen einzelnen Generationsprozess erforderlichen Vorgänge können in ein einzelnes Zielelement platziert werden, aber das verringert die Flexibilität. Es ist normalerweise vorzuziehen, diese Operationen in logische Erzeugungsschritte zu unterteilen, wobei jeder Schritt in seinem eigenen Zielelement enthalten ist. Auf diese Weise können einzelne Teile des Gesamtgenerierungsprozesses durchgeführt werden, ohne notwendigerweise andere Teile auszuführen.
Wenn Sie beispielsweise nur bestimmte Ziele aufrufen, können Sie den Quellcode Ihres Projekts kompilieren, ohne eine installierbare Projektdatei erstellen zu müssen. Das Projektelement der obersten Ebene muss ein Standardattribut enthalten, das das zu ausgeführte Ziel angibt, wenn Ant aufgerufen wird. Dann müssen Sie das Zielelement verwenden, um das Ziel selbst zu definieren.
Hier ist eine grundlegende generierte Datei:
<?
Grundnutzung von Ant:
1. Konfigurieren von Umgebungsvariablen:
ANT_HOME: C: /ant-1.8 ------> Ameiseninstallation/Dekompression Verzeichnisweg
Anhängen an Pfad: c: /ant-1.8/bin ------> Bin-Verzeichnispfad in Ant Ameise
2. Bestätigen Sie, ob die Konfiguration der Umgebungsvariablen das CMD -Fenster erfolgreich öffnet, und geben Sie dann den Befehl ein: Ant:
Siehe die folgende Anzeige:
Da Ant ANT im Erstellen standardmäßig über eine Build.xml -Datei verfügen, gibt es die oben genannte Eingabeaufforderung, was bedeutet, dass die Umgebung von Ant erfolgreich konfiguriert wurde.
3. Erstellen Sie einen Ordner namens HelloWorld mit ANT:
Zuerst müssen Sie Build.xml bearbeiten:
<?
Wechseln Sie dann in das Verzeichnis, in dem sich die Datei "Build.xml) befindet, und geben Sie eine Eingabeaufforderung ein, und wenn eine Eingabeaufforderung wie folgt vorliegt, ist die Ordnererstellung erfolgreich:
(Der Init -Teil entspricht der Ausgabe des Protokolls)
4.. Sie können Ants auch verwenden, um mehrstufige verschachtelte Dateiverzeichnisse zu erstellen, die nur in der Datei "Build.xml" geändert werden müssen:
<?
5. Löschen Sie das mehrstufige Verzeichnis wie oben:
<?
Hinweis: Hier muss der Pfad nur den Verzeichnispfad auf höchster Ebene betreten, der genau die Leistung des Ameisenwerkzeugs ist:
Wenn Sie ein Verzeichnis in Java löschen möchten, können Sie es löschen, es sei denn, das Verzeichnis ist leer, andernfalls müssen Sie es nach und nach löschen.
Mit dem Ant -Tool können Sie Ordner, die Unterverzeichnisse enthalten, direkt löschen.
Schauen wir uns eine andere XML -Datei ein Beispiel an:
<? </Beschreibung> <!-XML-Kommentare können auch verwendet werden-> <Ziel name = "init" Beschreibung = "Initialize argon database"> <!-Initialisierungsschritte hier-> </target> </project>
Wie zu sehen ist, können XML -Kommentare für Klarheit in der gesamten Build -Datei verwendet werden. Darüber hinaus definiert ANT sein eigenes Beschreibungselement- und Beschreibungattribute, mit denen strukturiertere Annotationen bereitgestellt werden können.
Ameisenattribut:
Eigenschaften in ANT ähneln Variablen in Programmiersprachen und haben alle Namen und Werte. Im Gegensatz zu den üblichen Variablen werden die Eigenschaften bei ANT jedoch nicht geändert. Sie sind unveränderlich, genau wie String -Objekte in der Java -Sprache. Dies mag zunächst restriktiv erscheinen, aber es soll dem einfachen Prinzip von Ant folgen: Schließlich ist es ein Generator -Tool, keine Programmiersprache. Wenn Sie versuchen, einer vorhandenen Eigenschaft einen neuen Wert zuzuweisen, wird dies nicht als Fehler angesehen, aber die Eigenschaft behält weiterhin ihren vorhandenen Wert bei
Definition und verwenden Eigenschaften:
<Eigenschaft name = "metall" value = "Beryllium"/>
Verwenden Sie die folgende Syntax, um diese Eigenschaft in anderen Teilen der generierten Datei zu verweisen:
Kopieren Sie den Code wie folgt: $ {Metal}
Schreiben Sie beispielsweise einen solchen Wert, der Teil des Wertes einer anderen Eigenschaft ist, das Etikett wie folgt
<Eigenschaft name = "metalldatabase" value = "$ {metall} .db"/>
Standortattribut:
Attribute werden häufig verwendet, um Dateien oder Verzeichnisse in Dateisystemen zu referenzieren. Für Plattformen, die unterschiedliche Pfadabscheider verwenden (z. B. / und /), kann dies zu Problemen führen, wenn sie verschiedene Plattformen überspannen. Das Standortattribut von Ants ist speziell so konzipiert, dass Dateisystempfade auf plattformunabhängige Weise einbezogen werden. Verwenden Sie den Standort anstelle von Wert wie folgt:
<Eigenschaft name = "Database-file" location = "archiv/datenbanken/$ {metall} .db"/> Die für das Standortattribut verwendeten Pfadzeichen werden in das richtige Format der aktuellen Plattform konvertiert. Und da der Dateiname relativ ist, wird er als relativ zum Basisverzeichnis des Projekts angesehen. Wir können es auch leicht wie folgt schreiben:
<Eigenschaft name = "Database-file" location = "archiv/datenbanken/$ {metall} .db"/>Beide Versionen dieses Tags haben das gleiche Verhalten auf verschiedenen Plattformen.
Abhängigkeiten definieren:
Das Generieren eines Projekts erfordert im Allgemeinen viele Schritte - zum Beispiel müssen Sie zuerst den Quellcode kompilieren und dann in eine Java -Archivdatei (JAR) verpacken. Viele dieser Schritte haben eine klar definierte Reihenfolge - beispielsweise können Sie die Klassendatei nicht verpacken, bis der Compiler sie aus dem Quellcode generiert. Im Gegensatz zu den nacheinander angegebenen Zielen verfolgt ANT einen flexibleren Ansatz zur Definition von Abhängigkeiten. Jedes Ziel wird auf der Grundlage aller anderen Ziele definiert, die erreicht werden müssen, bevor es ausgeführt werden kann. Dies wird unter Verwendung des Abhängigen Attributs des Zielelements erreicht
<target name = "init"/> <target name = "precess" abhängig = "init"/> <target name = "compile" hängt ab.
Mit dieser Methode können Sie den Erzeugungsprozess in jeder Phase des Projekts durchführen. Ant wird zuerst die definierte Voraussetzungsphase ausführen. Wenn Ant Amkt den Kompilierungsschritt abschließt, wird festgestellt, dass die beiden Ziele von Init und Preprocess zuerst ausgeführt werden müssen. Das Init -Ziel hängt nicht von einem anderen Ziel ab, daher wird es zuerst ausgeführt. Ant überprüft dann das Präprozessstarget und stellt fest, dass es vom Init -Ziel abhängt. Da letzteres hingerichtet wurde, wird Ant, der es nicht wieder ausführt, und beginnt damit, das Preprocess -Ziel auszuführen. Schließlich kann die Kompilierungsaufgabe selbst ausgeführt werden.
Beachten Sie, dass die Reihenfolge, in der die Ziele in der generierten Datei angezeigt werden, nicht wichtig ist: Die Reihenfolge, in der die Ausführung eindeutig durch das Abhängigkeit von Attribut bestimmt wird.