2009-11-04 11 views
8

Mam skrypt narzędzia do budowania, który jest wywoływany z różnych skryptów kompilacji projektu na serwerze kompilacji. Wszystko działa poprawnie, dopóki nie zmieni się względna struktura katalogów. Czyli:Odwołanie lokalizacji skryptu ant z pliku ant

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

działa dobrze, ale czasami musimy:

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

Problemem jest to, że imported.xml potrzeby some_resource_file i obecnie dociera do niego poprzez odniesienie do ../utilities/some_resource_file. To oczywiście działa w pierwszym przypadku, ponieważ katalog roboczy jest rodzeństwem: utilities.

Czy istnieje prosty sposób, aby imported.xml wiedzieć, w którym katalogu jest, co odpowiada dirname $0 w bash? Czy muszę coś zrobić, aby wstrzyknąć to ze skryptu importującego?

Odpowiedz

19

Upewnij się, że import.xml definiuje projekt z atrybutem name. Następnie możesz użyć tej nazwy do bezwzględnej ścieżki do pliku ant poprzez właściwość ant.file.name.

Mam dużą wartość IMPORTOWANĄ, więc możesz łatwo zobaczyć ją w kodzie.

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

To działa świetnie. Znalazłem odpowiedź w podręczniku, ale tylko skopiowałem link tutaj. Może to pomoże innym, którzy nie będą mogli łatwo poruszać się po podręczniku Ant. –