2008-08-12 21 views
26

Ben bir yapı komut dosyası varsa ve o senaryo kopyalar bir dizine bir kavanoz dosyası, kolaylığı utils kavanoz arama sağlar için bir parçası olarak. utils jar, başka bir dizinde oturan başka bir oluşturma komut dosyası tarafından oluşturulur. Yapmaya çalışıyorum ne yapıyorum benim komut betiği utils inşa komut dosyasını çalıştırmak, böylece kavanozlar güncel olduğundan emin olabilirsiniz.Ant yapı komut, antcall, bağımlılıklar, vb

Ben de utils dosyasını oluşturmak ithalat gerekir biliyorum. ithalat görev, neredeyse her karınca TAKS aksine basedir çalıştırmak değil çünkü çalışmıyor

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

, bu pwd çalışır.

: Ben başarıyla Yani şimdi o ive ben görevi aramam lazım benim ithalat sorunu çözüldü yapı dosyası

<property name="baseDirUpOne" location=".." /> 
    <import file="${baseDirUpOne}/utils/build/build.xml" /> 
ithal etmez bu küçük gemici, sahip oldukları aşmanın, iyi ki kolay hakkı olmalı yukarıdaki, utils ../utils/build/build.xml

şimdi içine çalıştırıyorum sorun proje adı olduğunu

<antcall target="utils.package" /> 

not karınca çağrı yürütmek olmamasıdır. ./utils/build, ihtiyacım olan şey, ve bulamıyorum, esasen bir runat mülkiyet veya benzeri bir şey:

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

Buna ihtiyacım sebebi benim utils'teki yolları hardcoding önlemek için göreli yollar dayanmaktadır kavanoza kopyalamak için hangi kod seçmek için dosyayı adım inşa olmasıdır karınca dosyamda. Herhangi bir fikir?

cevap

33

bende benzer bir şey kurulum: Ben testleri bina ilgilenir ayrı build.xml çağıran bir ana Ant build.xml var. Bu benim böyle yaparız:

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

hile subant yerine antcall kullanmaktır. Diğer yapı dosyasını içe aktarmanız gerekmez.

+0

Alt sınıf hedefindeki sınıf yolunu ayarlamanız gerekirse ne olur? –

6

kullanmayı deneyin yerine geçerli yapı dosyasına ithal yerine doğrudan ithal yapı çalışır "antcall" görev ait "ant" task.

dizin yeni Ant proje için bir basedir olarak kullanmak için: Bu bir "dir" parametresi vardır. inheritall false olarak ayarlanır sürece geçerli projenin basedir Varsayılan, içinde bir varsayılan değeri yoktur bu durumda. Bu çağrılan proje basmen ayarını geçersiz kılacaktır.

Yani yapabilirsiniz: Böyle

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

falan. Sen geçebilir

+2

Bunu

0

antcall bloğunda iç içe kullanarak antcall aşağı params. Böylece, özellikleri bu şekilde (muhtemelen özellikler değişmez olduğundan bile basedir) aktarabilirsiniz.