Heeft u ooit een schema nodig gehad voor Apache Ant?
Recentelijk had ik problemen met de ANT-bestanden voor een softwareproject waaraan ik werkte. Ik bewerkte een van deze bestanden in XMLSpy, maar ik kreeg geen hulp bij het invullen van velden en geen automatische code-suggesties, omdat ik geen schema aan mijn script had gekoppeld.
Het leek een eenvoudig probleem, dus ik ben op zoek gegaan naar het schema.
Ik vond snel een vraag op Stack Overflow waarin iemand naar hetzelfde zocht. Het antwoord is dat er geen Ant-schema of DTD bestaat. De reden hiervoor is eenvoudig: bovenop de uitdaging om een flexibel en compleet model van de kern van Ant te maken, zou het ook alle externe taken moeten kunnen omvatten.
Ik herinnerde me meteen dat ik hier een paar jaar geleden al eens was geweest, maar deze keer dacht ik dat ik de functie voor schema-generatie van XMLSpy zou gebruiken om te proberen er iets aan te doen
Als er geen officieel schema wordt ontwikkeld, kunt u XMLSpy gebruiken om snel een schema te maken dat de specifieke taken en functies dekt die u gebruikt. Naarmate u meer functies gebruikt, is het toevoegen aan uw XSD-bestand een zeer eenvoudige handeling, in ruil voor uitstekende bewerkingsondersteuning en validatiehulp.
XMLSpy kan schema's genereren op basis van een set XML-bestanden. Dit werkt als volgt: u maakt een project door in het menu "Project" te kiezen voor "Nieuw project". Zorg ervoor dat het venster "Project" geopend is; zo niet, gebruik dan het menu "Venster" om het te openen. Voeg vervolgens uw Ant-bestanden toe aan een map binnen dit project door met de rechtermuisknop op de map te klikken en "Bestanden toevoegen" te selecteren.
![]()
Nadat u de bestanden hebt toegevoegd, klikt u opnieuw met de rechtermuisknop op de map en selecteert u "DTD/Schema genereren".
![]()
Mijn project bevat tientallen Ant-scripts, dus we hebben een behoorlijk representatief beeld van hoe Ant wordt gebruikt bij de ontwikkeling die we uitvoeren. Dat betekent dat XMLSpy alle verschillende manieren waarop we Ant gebruiken zal zien, en een schema zal genereren dat alles omvat wat we tot nu toe met Ant hebben gedaan.
![]()
Het genereren van het schema was erg eenvoudig. Hoewel XMLSpy erg goed is in het genereren van modellen, krijg je onvermijdelijk een uitgebreid schema als je het 60 Ant-bestanden voert. U kunt mijn selecties zien in het dialoogvenster "Schema genereren" op deze screenshot. De belangrijkste opties voor mij waren het verkrijgen van globale types en het beperken van het aantal enumeraties, om het uitbreiden van het schema te vereenvoudigen.
![]()
Voordat ik de nieuwe XSD-schema's verder kon verbeteren, moest ik bepalen wat ik met dit project wilde bereiken.
Ant is enorm flexibel en staat allerlei soorten waarden in attributen toe, en veel externe taken zijn niet in een specifieke context geplaatst. Ik wilde geen perfect schema, maar wel een dat nuttig zou zijn voor dit project. Mijn doel was om een zeer flexibel schema te hebben, zodat XMLSpy ondersteuning kan bieden bij het invullen van gegevens wanneer ik Ant-bestanden bewerk, om het proces te versnellen.
Op de lange termijn willen we misschien de regels iets strenger maken om ons te helpen consistente en correcte Ant-bestanden te schrijven, maar dat is voor later. Eerst wilde ik gewoon een heel eenvoudig bewijs van het concept.
Met dat in gedachten, ben ik begonnen met het vereenvoudigen van het gegenereerde schema. XMLSpy genereert XSD-bestanden die elk mogelijk scenario uitgebreid behandelen. Het gaf me een technisch correct schema, maar één dat iets meer detail bevatte dan ik nodig of wenselijk vond. Maar in de XSD-weergave kostte het slechts een paar minuten om elementen te verplaatsen en onnodige takken samen te voegen, om zo tot een zeer overzichtelijk model te komen.
Het eerste bewijs kwam toen ik alle ongeveer 60 ANT-bestanden kon valideren tegen mijn vereenvoudigde XSD-schema. Nadat ik een paar elementen had toegevoegd die ik per ongeluk tijdens het opschonen was kwijtgeraakt, kon ik verder. Ik klikte met de rechtermuisknop op mijn projectmap en selecteerde "alles valideren". Alles werd in een snelle batch van 5 seconden gevalideerd.
![]()
Het tweede belangrijke aspect was de contextgevoelige hulp die XMLSpy bood toen ik een nieuw Ant-bestand aanmaakte. Ik realiseerde me al snel dat er in de loop van de tijd veel nieuwe elementen zouden worden toegevoegd, naarmate we nieuwe taken en functies gebruikten. Zo merkte ik bijvoorbeeld dat ik het sysproperty-element moest toevoegen aan junit, omdat we dit element voorheen nog niet hadden gebruikt.
Maar het toevoegen van een element of attribuut hier en daar is eenvoudig in de Schemaweergave, en na verloop van tijd zullen we dit steeds minder vaak hoeven te doen.
![]()
Over het algemeen, voor mijn eenvoudige doeleinden, bleek het maken van een Ant-schema een kleine, maar mooie overwinning.
![]()
Als u mijn zeer eenvoudige schema wilt gebruiken als basis voor het maken van uw eigen schema, kunt u het hier downloaden. Laat me weten hoe het voor u werkt.