2012-02-01 7 views
5

Poiché il mio file ant è molto complesso, desidero modulare i miei elementi classpath.Modulare i percorsi di classe negli script delle formiche (ad esempio tramite refid)

Attualmente, io uso refid nel seguente modo:

<path id="compile.classpath"> 
    <pathelement path="foo"/> 
    <!-- ... --> 
</path> 

<path id="test.classpath"> 
    <path refid="compile.classpath"/> 
    <pathelement path="bar"/> 
    <!-- ... --> 
</path> 

<!-- ... --> 

    <javac> 
     <classpath refid="compile.classpath"/> 
    </javac> 

    <junit> 
     <!-- ... --> 
     <classpath> 
      <path refid="test.classpath"/> 
      <path path="bazz"/> 
     </classpath> 
    </junit> 

<!-- ... --> 

Si tratta di un approccio ragionevole? O c'è uno migliore?

È corretto utilizzare un id di percorso (compile.classpath) per un classpath-refid (in <javac>)? (E 'attualmente lavora, ma refid richiede gli elementi per essere dello stesso tipo. Dal momento che path e classpath sono sia le strutture percorso simile, essi sono dello stesso tipo?)

risposta

5

Ho usato con successo questo approccio ad un lavoro precedente ed era davvero l'unico modo per tenere tutto sano di mente.

Alla fine ho fatto un passo in più e ho inserito tutte le definizioni di libreria di terze parti in un file separato poiché molte di esse erano librerie multi-jar e assicurandosi di averle tutte contenute nei miei file di guerra finali stava diventando essere una seccatura gigantesca. In questo modo, nel mio numero principale build.xml (e altri) potrei fare riferimento, per esempio, a lib.jaxb e non dovrei preoccuparmi di aver aggiornato i numeri di versione nei nomi dei file ovunque.

Hai già capito come estendere il tuo classpath di compilazione per rendere il tuo classpath di prova, quindi sei sulla strada giusta.

In breve, premere.

+0

Grazie per aver confermato il mio approccio (+1). Poiché non desidero includere tutte le librerie di terze parti in tutto il mondo, ho creato diversi raggruppamenti in elementi del percorso, come compile.classpath e test.classpath, che posso quindi combinare ed estendere. Funziona, non ero sicuro se ci fosse qualche soluzione standard per questo che mi mancava. – DaveFar

+0

Non so se è standard o no, ma ha funzionato per me. – Argyle

Problemi correlati