---
title: "Avete mai desiderato uno schema per Apache Ant?"
date: "2012-09-05"
tags: 
  - "ant-schema"
  - "ant-xsd"
  - "apache-ant"
  - "xmlspy"
description: Scoprite come creare uno schema XML personalizzato per Apache Ant utilizzando XMLSpy, per migliorare la validazione e il supporto di modifica dei vostri file Ant.
---
Status: #blog

Tags:  #ant-schema #ant-xsd #apache-ant #xmlspy

Categories: [Altova](/blog/it/category/altova.md) 
# Avete mai desiderato uno schema per Apache Ant?

Recentemente, ho riscontrato alcuni problemi con i file Ant per un progetto software a cui stavo lavorando. Stavo modificando uno di questi file con [XMLSpy](https://www.altova.com/it/xmlspy.html), ma non ricevevo suggerimenti o completamento automatico del codice perché non avevo associato uno schema al mio script.

Sembrava un problema semplice, quindi sono andato alla ricerca dello schema.

Ho rapidamente trovato una domanda su Stack Overflow che cercava la stessa cosa. La risposta è che non esiste uno schema o un DTD per Ant. La motivazione è semplice: oltre alla difficoltà di creare un modello flessibile e completo del core di Ant, sarebbe in grado di includere tutte le attività esterne.

Mi sono subito ricordato di essere stato qui qualche anno fa, ma questa volta ho pensato di utilizzare la funzione di generazione di schemi di XMLSpy per cercare di risolvere il problema

<table class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;" cellspacing="0" cellpadding="0"><tbody><tr><td style="text-align: center;"><a style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;" href="http://lh6.ggpht.com/-0YuLu2iBKTk/UEEWxHUUk5I/AAAAAAAAAU0/Xz5UgEpor1U/s1600-h/clip_image002%25255B3%25255D.jpg"><img style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="clip_image002" src="https://lh5.ggpht.com/-7-tEVMHFTzo/UEEWxala_SI/AAAAAAAAAU8/xonqJUBJBZo/clip_image002_thumb.jpg?imgmax=800" alt="XMLSpy XML editor" width="202" height="177" border="0"></a></td></tr><tr><td class="tr-caption" style="text-align: center;"></td></tr></tbody></table>

<!--more-->

Se non è possibile implementare uno schema ufficiale, è possibile utilizzare XMLSpy per crearne rapidamente uno che copra le specifiche funzionalità e attività che utilizzate. Man mano che utilizzate più funzionalità, aggiungere elementi al vostro XSD richiede uno sforzo minimo, in cambio di un eccellente supporto per la modifica e un valido aiuto per la convalida.

XMLSpy può generare schemi a partire da un insieme di file XML. Il processo funziona così: si crea un progetto selezionando "Nuovo progetto" nel menu "Progetto". Assicuratevi che la finestra del progetto sia aperta; in caso contrario, utilizzate il menu "Finestra" per aprirla. Quindi, aggiungete i vostri file Ant a una cartella all'interno del progetto, facendo clic con il tasto destro sulla cartella e selezionando "Aggiungi file".

[![Progetto XMLSpy](https://lh5.ggpht.com/-mre2_DXTlp4/UEEWyHDjglI/AAAAAAAAAVM/O_eIwwrQBhY/clip_image004_thumb.jpg?imgmax=800 "XMLSpy Project")](http://lh3.ggpht.com/-RuUoEQXnGbY/UEEWx5722GI/AAAAAAAAAVE/hJh7kKSxiSU/s1600-h/clip_image004%25255B3%25255D.jpg)

Dopo aver aggiunto i file, cliccare nuovamente con il tasto destro sulla cartella e selezionare "Genera DTD/Schema".

[![Creazione di uno schema basato sui file Ant](https://lh6.ggpht.com/-ozQ64GJ-nWk/UEEWy4Qxf5I/AAAAAAAAAVc/engfRgPVVMs/clip_image006_thumb.jpg?imgmax=800 "Generating a Schema based on Ant files")](http://lh3.ggpht.com/-eu93uiRCaZI/UEEWyVmYsKI/AAAAAAAAAVU/v9-LmOs5zlc/s1600-h/clip_image006%25255B3%25255D.jpg)

Il mio progetto include decine di script Ant, quindi abbiamo una panoramica piuttosto completa di come viene utilizzato Ant nello sviluppo che stiamo portando avanti. Questo significa che XMLSpy analizzerà tutti i diversi modi in cui utilizziamo Ant e genererà uno schema che copre tutto ciò che abbiamo fatto con Ant finora.

[![File di configurazione di Ant](https://lh3.ggpht.com/-UUx0gazWKws/UEEWzeDg4TI/AAAAAAAAAVs/Pxaz6KoFviY/clip_image008_thumb.jpg?imgmax=800 "Ant files ")](http://lh4.ggpht.com/-ymrJbZ-C7FU/UEEWzLlutwI/AAAAAAAAAVk/ZnZLs6ZeTDA/s1600-h/clip_image008%25255B3%25255D.jpg)

Creare lo schema è stato molto semplice. Tuttavia, per quanto XMLSpy sia efficace nella creazione di modelli, quando si forniscono 60 file Ant, è inevitabile ottenere uno schema molto complesso. Potete vedere le mie selezioni nella finestra di dialogo "Genera schema" mostrata nello screenshot. Le opzioni più importanti per me erano ottenere tipi globali e poche enumerazioni, al fine di semplificare l'estensione dello schema.

[![Genera la finestra di dialogo XSD](https://lh6.ggpht.com/-d6dHbL60V1M/UEEW0Pl0bdI/AAAAAAAAAV8/Jo1vECdU4FQ/clip_image010_thumb.jpg?imgmax=800 "Generate XSD dialog")](http://lh4.ggpht.com/-QccmDlCiiac/UEEWzwq_xuI/AAAAAAAAAV0/iXWZfw_JQLI/s1600-h/clip_image010%25255B3%25255D.jpg)

Prima di apportare miglioramenti allo schema XSD, dovevo decidere quali obiettivi volevo raggiungere con questo lavoro.

Ant è estremamente flessibile e consente l'utilizzo di tutti i tipi di valori negli attributi, e molte attività esterne non sono organizzate in spazi di nomi. Non volevo uno schema perfetto, ma solo uno che fosse utile per questo progetto. Il mio obiettivo era avere uno schema molto flessibile che permettesse a XMLSpy di offrire un supporto di assistenza durante la modifica dei file Ant, al fine di velocizzare il processo.

A lungo termine, forse vorremo renderlo un po' più rigoroso per aiutarci a scrivere file Ant coerenti e corretti, ma questo è un progetto per il futuro. Per ora, volevo solo una dimostrazione di massima molto semplice.

Tenendo presente questo, ho iniziato a semplificare lo schema generato. XMLSpy genera file XSD che coprono ogni caso in modo esaustivo. Mi ha fornito uno schema tecnicamente corretto, ma con un livello di dettaglio maggiore di quanto desiderassi o avessi bisogno. Tuttavia, nella visualizzazione XSD, sono bastati pochi minuti per spostare gli elementi e consolidare i rami non necessari, ottenendo così un modello molto più semplice.

[![Schema ant](https://lh4.ggpht.com/-w_6eLKDf0uY/UEEW0x2LEiI/AAAAAAAAAWM/IQ9kJ0I87kQ/clip_image012_thumb.jpg?imgmax=800 "Ant schema")](http://lh5.ggpht.com/-QtfDL83gfzY/UEEW0iCNveI/AAAAAAAAAWE/rMjq6ILsGgc/s1600-h/clip_image012%25255B3%25255D.jpg)
 
Il primo passo importante è stato quando sono riuscito a verificare tutti i circa 60 file Ant rispetto al mio schema XSD semplificato. Dopo aver ripristinato alcuni elementi che avevo perso accidentalmente durante la pulizia, ho potuto procedere. Ho fatto clic con il tasto destro sulla cartella del mio progetto e ho selezionato "verifica tutto". L'operazione di verifica è stata completata in pochi secondi.

[![Verifica di Ant rispetto allo schema generato](https://lh6.ggpht.com/-s3ozsT7aSuk/UEEW1oNCvjI/AAAAAAAAAWc/yHwfkOFnMaM/clip_image014_thumb.jpg?imgmax=800 "Validating Ant against generated schema")](http://lh5.ggpht.com/-ocdYbJiia6g/UEEW1GaH5DI/AAAAAAAAAWU/EMxziDPR_Zw/s1600-h/clip_image014%25255B3%25255D.jpg)
 

Il secondo aspetto positivo è stata la possibilità di accedere all'assistenza contestuale offerta da XMLSpy mentre creavo un nuovo file Ant. Ho rapidamente realizzato che, con l'utilizzo di nuove funzionalità e attività, sarebbero stati necessari molti nuovi elementi da aggiungere nel tempo. Ad esempio, ho scoperto di dover aggiungere l'elemento `sysproperty` all'interno di `junit` perché non lo avevamo utilizzato in precedenza.

Tuttavia, aggiungere un elemento o un attributo in punti specifici è semplice nella vista Schema, e nel tempo dovremo farlo sempre meno frequentemente.

[![Aggiungere elementi nella vista dello schema](https://lh6.ggpht.com/-9vVSTwycnI8/UEEW2Dn0Y5I/AAAAAAAAAWs/zcDGrzUJv2g/clip_image016_thumb.jpg?imgmax=800 "Adding elements in schema view")](http://lh4.ggpht.com/-DBr4vr075Iw/UEEW1yNzjOI/AAAAAAAAAWk/fTHD2c8VKC0/s1600-h/clip_image016%25255B3%25255D.jpg)


In generale, per le mie esigenze, creare uno schema Ant si è rivelato un piccolo successo.

[![Modificare Ant con il supporto dell'intellisense](https://lh6.ggpht.com/-j64qoAj-y1s/UEEW2zqdjJI/AAAAAAAAAW8/q1Mm5Ip6uoU/clip_image018_thumb.jpg?imgmax=800 "Editing Ant with intellisense")](http://lh4.ggpht.com/-3Ol_tgqt7q0/UEEW2buRmOI/AAAAAAAAAW0/x1oJ5PFJ6Xs/s1600-h/clip_image018%25255B3%25255D.jpg)


Se desiderate utilizzare il mio schema molto semplice come punto di partenza per crearne uno vostro, potete scaricarlo qui: [scaricatelo qui](http://metateam.net/extras/ant-schema.xsd). E fatemi sapere come vi è utile.
