2009-05-28 20 views

cevap

11

Hedefin bir "engelsiz" sürümünü oluşturun. Eğer

<target name="A" depends="B,AwithoutDeps"/> 

<target name="AwithoutDeps"> 
    ... 
</target> 

değiştirin

<target name="A" depends="B"> 
    ... 
</target> 

olsaydı Şimdi (AwithoutDeps ardından B ateşlemesi olacaktır) ya da sadece açıkça AwithoutDeps diyoruz A normal çağırabilir ve hiçbir deps ateş etti. bunlardan daha bazı iyi isimler seçin Tabii

[sırayla bağımlılıkları "bağlıdır" çağrıları unutmayın];)

+0

Benim çözümüme çok benzer - Bence farklılık sadece bir stil sorunudur. Bu, karınca bağımlılık işlevini kullanır, çözümüm "kapsülleme" işlevini kullanır. – Jared

+0

Teşekkürler! Bu kopyalama ve yapıştırmadan daha temiz görünüyor. – GreenieMeanie

+0

@Jared - Ben de antcall hakkında düşündüm, ama özellikleri ve böyle bir kopyasını kurar gibi, daha pahalı AFAIK. Olsa da bu büyük bir anlaşma değil ... –

2

Buradaki tek basit seçiminiz, sadece söz konusu hedefin bir kopyasını yapmak ve bağımlılıkları olmamasıdır.

+0

Artık öznitelik niteliklerini şimdi kaldırıyorum (ki bu neredeyse aynı şeydir), ama muhtemelen daha temiz bir çözüm için merak ediyorum. – GreenieMeanie

+0

Bu, karınca komut satırı için bir seçenek olması güzel olurdu. – user959690

1

Böyle bir şey yapacağını:

<target name="doSomethingNoDeps"> 
    ... 
</target> 

<target name="doSomething" depends="doSomeOther"> 
    <antcall target="doSomethingNoDeps"/> 
</target> 
2

Bir olasılık kullanmaktır Bağımlılık hedef (ler) ine ilişkin if veya unless özniteliği. Örneğin:

<target name="dependency1" unless="dependency1.disabled"> 
    <echo>Hello from dependency 1!</echo> 
</target> 

<target name="dependency2" unless="dependency2.disabled"> 
    <echo>Hello from dependency 2!</echo> 
</target> 

<target name="main-target" depends="dependency1, dependency2"> 
    <echo>Hello from the main target!</echo> 
</target> 

Şimdi istemediğiniz bağımlılıkları bırakmak -Ddependency1.disabled=true ve/veya -Ddependency2.disabled=true ile Ant çalıştırabilir, ancak varsayılan hala onları dahil etmek olacaktır.

Ve tabi ki, sizin için daha kolay olan bir "global" dependencies.disabled özelliğine sahip olabilirsiniz. Eğer (bağımlılıklar varsayılan olarak hariç) bu davranışın sohbet yapmak istiyorsanız

, sadece if yerine unless kullanımı (ve bunun yerine "engelli" nin "dependency1.enabled" gibi mülkiyet isimleri var) .

-1

Makroyu bir parça kodla yaptım, istediğimi. Sonra 2 hedef yaptı, 1 "arg1" ile makro çağırır, 2 "arg2" ile. Ayrıca, ayar parametreleri olmadan makro da yapabilirsiniz.

+0

bir Cevap, sorunun nasıl çözüleceğini göstermelidir. Ne yaptığını göster. –