2008-08-12 14 views
26

Mam skrypt budujący i jako część tego skryptu kopiuje plik jar do katalogu, dla ułatwienia, nazwijmy go słojem utils. słoik utils jest zbudowany przez inny skrypt budujący znajdujący się w innym katalogu. Co ja próbuję zrobić, to mój skrypt budujący uruchomi skrypt budujący utils, aby zapewnić, że słoik utils jest aktualny.Skrypty Ant build, antcall, zależności, itp.

Wiem, że muszę zaimportować plik instrukcji utils.

<import file="../utils/build/build.xml" /> 

Które nie działa, ponieważ zadanie import, w przeciwieństwie do niemal wszystkich innych mrówek taks, nie działa od basedir, biegnie od pwd. Tak, aby ominąć, że mam tę małą pieśń, która ma zaimportować plik build

<property name="baseDirUpOne" location=".." /> 
    <import file="${baseDirUpOne}/utils/build/build.xml" /> 

Więc teraz, że ive rozwiązać mój problem importu Muszę zadzwonić zadanie, dobrze, że powinien być łatwy rację:

<antcall target="utils.package" /> 

Zauważ, że w powyższym utils to nazwa projektu ../utils/build/build.xml

problem mam teraz jest to, że działa na mrówki połączenia nie wykonuje się. ./utils/build, więc to, czego potrzebuję i nie mogę znaleźć, jest właściwość runat lub coś podobnego, w zasadzie:

<antcall target="utils.package" runat="../utils/build" /> 

Powodem muszę to, że w moich utils kompilacji krok aby wybrać kod skopiować do słoika jest na podstawie względnych ścieżek, tak aby uniknąć hardcoding ścieżek w moim pliku mrówek. Jakieś pomysły?

Odpowiedz

33

Mam coś podobnego: mam główny plik build.xml Anta, który wywołuje osobny build.xml, który zajmuje się budowaniem moich testów. Oto jak to zrobić:

<target name="build-tests"> 
    <subant target="build"> 
     <fileset dir="${test.home}" includes="build.xml"/> 
    </subant> 
</target> 

Sztuką jest wykorzystanie subant zamiast antcall. Nie musisz importować drugiego pliku kompilacji.

+0

Co zrobić, jeśli trzeba dostosować ścieżkę klas w celu podrzędnym? –

6

Spróbuj użyć polecenia "ant" task zamiast zadania "antcall", które uruchamia zaimportowaną kompilację bezpośrednio, zamiast importować ją do bieżącego pliku kompilacji. Ma parametr "dir":

katalog, który ma służyć jako projektor bazowy dla nowego projektu Ant. Domyślnie bieżący projectir, chyba że dziedziczył na false, w w tym przypadku nie ma domyślnej wartości . Spowoduje to zastąpienie domyślnego ustawienia wywoływanego projektu.

Więc można zrobić:

<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" /> 

lub coś podobnego.

+2

Spraw, aby

0

Możesz przekazać paramy do antcall za pomocą zagnieżdżenia w bloku przeciwpożarowym. Tak więc możesz przekazać właściwości w ten sposób (prawdopodobnie nawet w oparciu o właściwości, ponieważ właściwości są niezmienne).

Powiązane problemy