Haben Sie sich jemals gewünscht, ein Schema für Apache Ant zu haben?

Vor kurzem hatte ich einige Probleme mit den Ant-Dateien für ein Softwareprojekt, an dem ich arbeitete. Ich bearbeitete eine dieser Dateien mit XMLSpy, erhielt aber keine Hilfestellungen oder automatische Codevorschläge, da ich kein Schema für mein Skript definiert hatte.

Das schien ein einfaches Problem zu sein, also machte ich mich auf den Weg, um das Schema zu finden.

Ich habe schnell eine Frage auf Stack Overflow gefunden, in der jemand nach der gleichen Information suchte. Die Antwort lautet: Es gibt kein Ant-Schema oder keine DTD (Document Type Definition). Der Grund dafür ist einfach: Über die Herausforderung, ein flexibles und umfassendes Modell des Ant-Kernsystems zu erstellen, hinaus, müsste es in der Lage sein, alle externen Aufgaben zu integrieren.

Ich erinnerte mich sofort, dass ich hier vor ein paar Jahren schon einmal gewesen war, aber diesmal dachte ich, ich würde die Funktion zur Schema-Generierung von XMLSpy nutzen, um zu versuchen, etwas dagegen zu unternehmen..

XMLSpy XML editor

Wenn kein offizielles Schema erstellt wird, können Sie XMLSpy verwenden, um schnell ein solches Schema zu erstellen, das die spezifischen Aufgaben und Funktionen abdeckt, die Sie verwenden. Je mehr Funktionen Sie nutzen, desto geringer ist der Aufwand, Ihr XSD-Schema zu erweitern, im Gegenzug erhalten Sie hervorragende Unterstützung beim Bearbeiten und bei der Validierung.

XMLSpy kann Schemata aus einer Sammlung von XML-Dateien generieren. Die Funktionsweise ist wie folgt: Sie erstellen ein Projekt, indem Sie im Menü "Projekt" auf "Neues Projekt" klicken. Stellen Sie sicher, dass das Projektfenster geöffnet ist; falls nicht, öffnen Sie es über das Menü "Fenster". Fügen Sie dann Ihre Ant-Dateien zu einem Ordner innerhalb des Projekts hinzu, indem Sie mit der rechten Maustaste auf den Ordner klicken und "Dateien hinzufügen" auswählen.

Nachdem Sie die Dateien hinzugefügt haben, klicken Sie erneut mit der rechten Maustaste auf den Ordner und wählen Sie "DTD/Schema generieren".

Mein Projekt enthält Dutzende von Ant-Skripten, sodass wir eine ziemlich umfassende Darstellung der Verwendung von Ant in unserer Entwicklung haben. Das bedeutet, dass XMLSpy alle verschiedenen Arten sehen wird, wie wir Ant einsetzen, und ein Schema erstellen wird, das alles abdeckt, was wir bisher mit Ant gemacht haben.

Das Erstellen des Schemas war kinderleicht. Allerdings, so gut XMLSpy auch beim Generieren von Modellen ist, wenn man ihm 60 Ant-Dateien zuführt, erhält man zwangsläufig ein sehr umfangreiches Schema. Meine Auswahlmöglichkeiten können Sie im Dialogfenster "Schema generieren" in diesem Screenshot sehen. Die wichtigsten Optionen für mich waren, globale Datentypen zu erhalten und nur wenige Enumerationen zu verwenden, um die Erweiterung des Schemas zu vereinfachen.

Bevor ich mit der Verbesserung der neuen XSD-Datei beginnen konnte, musste ich entscheiden, was ich mit diesem Projekt erreichen wollte.

Ant ist äußerst flexibel und erlaubt die Verwendung verschiedenster Werte in Attributen. Viele externe Aufgaben sind nicht in Namensräume unterteilt. Ich wollte kein perfektes Schema, sondern eines, das für dieses Projekt hilfreich ist. Mein Ziel war es, ein sehr flexibles Schema zu erstellen, das es XMLSpy ermöglicht, beim Bearbeiten von Ant-Dateien Hilfestellungen anzubieten, um den Prozess zu beschleunigen.

Langfristig möchten wir vielleicht noch einige Verbesserungen vornehmen, um das Schreiben von konsistenten und korrekten Ant-Dateien zu erleichtern, aber das ist erst später geplant. Im Moment wollte ich lediglich einen sehr einfachen Prototyp erstellen.

Unter Berücksichtigung dieser Überlegungen begann ich, das generierte Schema zu vereinfachen. XMLSpy generiert XSD-Dateien, die jeden Fall umfassend abdecken. Es lieferte mir ein technisch korrektes Schema, das jedoch etwas detaillierter war, als ich es benötigte oder wünschte. Aber in der XSD-Ansicht reichten ein paar Minuten, um Elemente zu verschieben und unnötige Zweige zusammenzufassen, um ein sehr übersichtliches Modell zu erhalten.

Der erste Beweispunkt war erreicht, als ich alle etwa 60 Ant-Dateien anhand meines vereinfachten XSD-Schemas validieren konnte. Nachdem ich einige Elemente wieder hinzugefügt hatte, die ich versehentlich während meiner Bereinigung verloren hatte, konnte ich weiterarbeiten. Ich habe mit der rechten Maustaste auf meinen Projektordner geklickt und "alle validieren" ausgewählt. Die Validierung aller Dateien erfolgte in einem schnellen Prozess von nur 5 Sekunden.

Der zweite wichtige Aspekt war die kontextsensitive Hilfe von XMLSpy, die ich beim Erstellen einer neuen Ant-Datei erhielt. Ich erkannte sehr schnell, dass im Laufe der Zeit viele neue Elemente hinzugefügt werden müssten, da wir neue Aufgaben und Funktionen nutzen würden. Zum Beispiel stellte ich fest, dass ich das Element sysproperty zu junit hinzufügen musste, weil wir es bisher noch nicht verwendet hatten.

Aber das Hinzufügen eines Elements oder Attributs hier oder dort ist in der Schema-Ansicht einfach, und im Laufe der Zeit werden wir dies immer weniger oft tun müssen.

Insgesamt war die Erstellung einer Ant-Konfigurationsdatei für meine einfachen Anforderungen ein kleiner, aber schöner Erfolg.

Wenn Sie mein sehr einfaches Schema als Ausgangspunkt für die Erstellung Ihres eigenen verwenden möchten, können Sie es hier herunterladen. Lassen Sie mich wissen, wie es für Sie funktioniert.