2008-08-26 9 views
7

Jedes Mal, wenn ich ein neues Projekt erstelle, kopiere ich die Ant-Datei des letzten Projekts auf die neue und führe die entsprechenden Änderungen durch (gleichzeitig versuche ich es flexibler für das nächste Projekt zu machen). Aber da ich am Anfang nicht wirklich darüber nachgedacht habe, begann die Datei wirklich hässlich auszusehen.Beste Apache Ant Vorlage

Haben Sie eine Ant-Vorlage, die einfach in ein neues Projekt portiert werden kann? Irgendwelche Tipps/Websites zum Erstellen?

Vielen Dank.

Antwort

9

Eine Alternative zum Erstellen einer Vorlage besteht darin, eine davon zu entwickeln, indem Sie das Ant-Skript des aktuellen Projekts allmählich verallgemeinern, damit beim nächsten Kopieren für ein neues Projekt weniger Änderungen vorgenommen werden. Es gibt mehrere Dinge, die Sie tun können.

Verwenden Sie $ {ant.project.name} in Dateinamen, so dass Sie nur Ihren Anwendungsnamen im Projektelement angeben müssen. Zum Beispiel, wenn Sie erzeugen myapp.jar:

<project name="myapp"> 
    ... 
    <target name="jar"> 
     ... 
     <jar jarfile="${ant.project.name}.jar" ... 

Struktur Quellverzeichnisstruktur, so dass Sie Ihren Build durch das Kopieren ganze Verzeichnisse verpacken können, anstatt die Benennung einzelne Dateien. Zum Beispiel, wenn Sie die JAR-Dateien auf ein Web-Anwendung Archiv kopieren, so etwas wie:

<copy todir="${war}/WEB-INF/lib" flatten="true"> 
    <fileset dir="lib" includes="**/*.jar"> 
</copy> 

Verwenden Eigenschaften Dateien für maschinenspezifische und projektspezifische Build-Datei-Eigenschaften.

<!-- Machine-specific property over-rides --> 
<property file="/etc/ant/build.properties" /> 

<!-- Project-specific property over-rides --> 
<property file="build.properties" /> 

<!-- Default property values, used if not specified in properties files --> 
<property name="jboss.home" value="/usr/share/jboss" /> 
... 

Beachten Sie, dass Ant Eigenschaften können nicht einmal eingestellt geändert werden, so dass Sie einen Wert überschreiben, indem Sie einen neuen Wert vor der Standardwert definieren.

0

Früher habe ich genau das Gleiche gemacht .... dann bin ich zu maven gewechselt. Maven stützt sich auf eine einfache XML-Datei, um Ihren Build zu konfigurieren, und ein einfaches Repository, um die Abhängigkeiten Ihres Builds zu verwalten (anstatt diese Abhängigkeiten mit Ihrem Code in Ihrem Quellcodeverwaltungssystem zu überprüfen).

Eine Funktion, die ich wirklich mag, ist, wie einfach es ist, Ihre Jars zu versionieren - ältere Versionen für ältere Benutzer Ihrer Bibliothek leicht verfügbar zu halten. Dies funktioniert auch zu Ihrem Vorteil, wenn Sie eine Bibliothek, die Sie verwenden, aktualisieren möchten - wie Junit. Diese Abhängigkeiten werden als separate Dateien (mit ihren Versionsinformationen) in Ihrem Maven-Repository gespeichert, so dass alte Versionen Ihres Codes immer ihre spezifischen Abhängigkeiten haben.

Es ist eine bessere Ant.

+3

Maven kann besser sein als Ameisen, aber das beantwortet die Frage nicht. Es gibt nicht immer den Luxus, zum Maven wechseln zu können. –

+1

Und aus meiner Erfahrung ist es nicht immer ein Luxus :( –

0

Früher habe ich genau dasselbe gemacht ... dann bin ich zu maven gewechselt.

Oh, es ist Maven 2. Ich hatte Angst, dass Maven heutzutage immer noch ernsthaft benutzt wird. Die Witze beiseite lassen: Wenn Sie sich entscheiden, zu Maven 2 zu wechseln, müssen Sie vorsichtig sein, während Sie nach Informationen suchen, denn Maven 2 ist eine vollständige Neuimplementierung von Maven, wobei grundlegende Designentscheidungen geändert wurden. Leider haben sie den Namen nicht geändert, was in der Vergangenheit eine große Quelle der Verwirrung war (und immer noch manchmal angesichts des "Gedächtnisses" des Webs).

Eine andere Sache, die Sie tun können, wenn Sie in der Ant Spirit bleiben wollen, ist Ivy zu verwenden, um Ihre Abhängigkeiten zu verwalten.

1

Wenn Sie an mehreren Projekten mit ähnlichen Verzeichnisstrukturen arbeiten und lieber bei Ant bleiben möchten als bei Maven, verwenden Sie Import task. Es ermöglicht Ihnen, die Projekt-Build-Dateien nur importieren Sie die Vorlage und definieren Sie alle Variablen (Classpath, Abhängigkeiten, ...) und haben alle real Build-Skript aus in der importierten Vorlage. Es erlaubt sogar das Überschreiben der Aufgaben in der Vorlage, wodurch Sie projektspezifische Pre- oder Post-Ziel-Hooks einfügen können.

+0

Ja, das ist vor allem, was ich denke .. Können Sie die Vorlage, die mit allen echten Build-Skript importiert werden bitte posten? – pek

0

Eine Sache zu betrachten - wenn Sie Eclipse verwenden, sehen Sie sich die ant4eclipse Aufgaben an. Ich benutze ein einzelnes Build-Skript, das nach den in Eclipse eingerichteten Details fragt (Source-Verzeichnisse, Build-Pfad einschließlich Abhängigkeitsprojekte, Build-Reihenfolge usw.).

Dies ermöglicht es Ihnen, Abhängigkeiten an einer Stelle zu verwalten (Eclipse) und trotzdem in der Lage zu sein, eine Befehlszeilenerstellung für die Automatisierung zu verwenden.

1

Ich hatte das gleiche Problem und verallgemeinerte meine Vorlagen und züchtete sie in einem eigenen Projekt: Antiplate. Vielleicht ist es auch nützlich für dich.

6

Sie können http://import-ant.sourceforge.net/ einen Versuch geben. Es handelt sich um eine Reihe von Build-Datei-Snippets, mit denen einfache benutzerdefinierte Build-Dateien erstellt werden können.

+0

Abgesehen von der angenommenen Antwort, Diese Antwort kommt der _actually_ am nächsten, wenn sie versucht, die Frage zu beantworten und nicht nur mit alternativen "besseren" Lösungen zu kommen. – Steen