2009-11-04 14 views
8

Ho uno script di build di utilità che viene chiamato da una varietà di script di costruzione specifici del progetto su un server di build. Tutto funziona bene, finché la relativa struttura di directory non cambia. Cioè:riferimento alla posizione dello script ant all'interno del file ant

trunk/ 
    utilities/ 
     imported.xml 
     some_resource_file 
    projectName/ 
     importing.xml 

funziona bene, ma a volte abbiamo bisogno:

trunk/ 
    importing.xml 
    utilities/ 
     imported.xml 
     some_resource_file 
    projectName/ 

Il problema è che imported.xml esigenze some_resource_file e attualmente ottiene ad esso facendo riferimento a ../utilities/some_resource_file. Questo ovviamente funziona nel primo caso perché la directory di lavoro è un fratello di utilities.

C'è un modo semplice per imported.xml per sapere in quale directory si trova, qualcosa di equivalente a dirname $0 in bash? O devo farlo devo in qualche modo iniettarlo dallo script di importazione?

risposta

19

Assicurarsi che imported.xml definisca il progetto con l'attributo name. Quindi è possibile utilizzare tale nome per un percorso assoluto per il file della formica attraverso la proprietà ant.file.name.

Ho scritto in maiuscolo IMPORTATO, quindi puoi facilmente vederlo nel codice.

<project 
    name="IMPORTED" 
> 
    <dirname 
    property="IMPORTED.basedir" 
    file="${ant.file.IMPORTED}" 
    /> 
    <property name="myresource" 
    location="${IMPORTED.basedir}/some_resource_file" 
    /> 
</project> 
+0

Questo funziona benissimo. Ho trovato la risposta nel manuale, ma ho copiato solo il link qui. Forse questo aiuterà gli altri che non trovano facile navigare nel manuale delle formiche. –