2009-11-04 15 views
8

Tengo un script de compilación de utilidad que recibe una llamada desde una variedad de scripts de compilación específicos del proyecto en un servidor de compilación. Todo funciona bien, hasta que la estructura de directorios relativa cambie. Es decir:haciendo referencia a la ubicación del script ant desde el archivo ant

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

funciona bien, pero a veces necesitamos:

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

El problema es que imported.xml necesidades some_resource_file y actualmente llega a ella por referencia a ../utilities/some_resource_file. Obviamente, esto funciona en el primer caso porque el directorio de trabajo es un hermano de utilities.

¿Hay una manera simple para imported.xml de saber en qué directorio está, algo equivalente a dirname $0 en bash? ¿O debo hacerlo? De alguna manera, ¿debo inyectar esto desde el script de importación?

Respuesta

19

Asegúrese de que imported.xml define el proyecto con el atributo name. Entonces puede usar ese nombre para una ruta absoluta al archivo ant a través de la propiedad ant.file.name.

He marcado en mayúscula IMPORTADO, por lo que puede verlo fácilmente en el código.

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

Eso funciona genial. Encontré la respuesta en el manual, pero solo copié el enlace aquí. Quizás esto ayude a otros que no encuentren fácil navegar el manual de la hormiga. –

Cuestiones relacionadas