Wer heute ein Projekt hat, welches komplett auf Ant Skripten basiert, der kann trotzdem über einen Wechsel nach Gradle nachdenken. Zumindest sieht man dies im Gradle Lager so. Gradle hat nämlich Integrationen für Ant und Maven. Daher bekommt man beispielsweise auch die aktuell verwendete Ant Version angezeigt, wenn man gradle -v
ausführt.
------------------------------------------------------------ Gradle 1.4 ------------------------------------------------------------ Gradle build time: Montag, 28. Januar 2013 03:42 Uhr UTC Groovy: 1.8.6 Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012 Ivy: 2.2.0 JVM: 1.7.0_17 (Oracle Corporation 23.7-b01) OS: Mac OS X 10.8.3 x86_64
Im Gradle Skript kann man auf Ant Tasks verweisen, bzw. Ant Befehle ausführen. Hierzu ein Beispiel, wie man ein Ant Taskdef in Gradle verwendet, mit Apache XML Beans. XML Beans ist eine JAXB Implementierung.
Als erstes das Beispiel, wie eine Ant Umsetzung aussehen würde.
build.xml:
In diesem Beispiel wird als erstes via taskdef
ein neues Ant „Element“ geschaffen, welches im Target „main“ verwendet wird. Im Attribute schema
wird das zu grundeliegende XML Schema definiert, auf dessen Basis Java Klassen erstellt werden sollen. Mit destfile
wird das anzulegenede JAR definiert.
Damit dies alles wirklich funktioniert, muss man sich natürlich darum kümmern, dass die Entsprechenden XML-Beans Library Dateien im lib
Verzeichnis liegen, dies kann man mit Gradle einfacher lösen.
Mit Gradle kann man auf das Maven Repository zugreifen, um sich die entsprechenden Libs direkt und ohne weiteres zutun herunterzuladen. Im Maven Repository bekommt man auch angezeigt, welche Notation man für Gradle verwenden muss, um es in sein build einzubinden.
build.gradle:
repositories { mavenCentral() } dependencies { xmlbeans 'org.apache.xmlbeans:xmlbeans:2.5.0' } configurations { xmlbeans } task main { ant.taskdef(name: 'xmlbean', classname: 'org.apache.xmlbeans.impl.tool.XMLBean', classpath: configurations.xmlbeans.asPath) ant.xmlbean(schema: 'src/main/schemas/XMLBeispiel.xsd', destfile: "build/libs/XMLBeispiel.jar", classpath: configurations.xmlbeans.asPath) }
Oben begonnen, repositories{ }
ist der Bereich in welchem die Quellen für Abhängigkeiten gesucht werden. Hier wird das oben bereits erwähnte Maven Repository verwendet, was durch den Teil mavenCentral()
erreicht wird. Da man sich schon mal auf die Quelle festgelegt hat, folgt nun der Bereich dependencies, welcher spezifiziert, welche abhängige Library eingebunden werden soll. In dem Beispiel wird xmlbeans
verwendet, in der Version 2.5.0. Der Name ist dabei nicht vorgegeben, man hätte auch „Hans“ verwenden können, wäre aber sicherlich nicht so sprechend gewesen. Der hintere Teil, zwischen den einfachen Einführungszeichen, wird dem Maven Repository entnommen.
Im configurations
Abschnitt, wird xmlbeans
als Konfigurationselement definiert, damit es verwendet werden kann und man darauf verweisen kann.
main
ist ein selbst definierter Taskname, den man von der Kommandozeile aufrufen kann, vergleichbar mit einem „Target“ in Ant. Hier erfolgt der Zugriff auf die Ant „Schreibweise“. ant.taskdef
ist identisch zum obigen taskdef
im Ant Skript, Attribute im Ant werden dabei einfach mit identischem Namen verwendet wie im Ant-build, name="xmlbean"
wird bei Gradle zu name : 'xmlbean'
. Und die Attribute sind durch Komma getrennt. Im Attribute classpath
gibt es allerdings hier eine Veränderung, im Gegensatz zur Ant Version, wird hier auf die XML Beans Library, die unter configuration
definiert wurde, verlinkt – configurations.xmlbeans.asPath
.
Das Ausführen des xmlbean
Task ist entsprechend.
Schreibe einen Kommentar