2011-07-16 32 views
13

Phing'de grup hedeflemenin bir yolu var mı? Farklı siparişlerde ve kombinasyonlarda çalıştırarak tekrar kullanılabilecek birkaç hedefim var.Phing'de hedefler nasıl gruplanır?

$ phing clean 
$ phing prepare 
$ phing build 
$ phing runtests 

Veya repo bir dev yapı güncellemek için:

$ phing update 
$ phing runtests 

tek komutla olarak çalıştırmak için bu hedefler grubuna bir yolu var mı Örneğin yeni bir dev yapı oluşturmak için?

$ phing clean prepare build runtests 
$ phing update runtests 

Ama ideal ben gibi bir komutu çalıştırmak istiyorum: Sana zincir hedefleri örneğin farkındayım

$ phing cleanbuild 

Bu dört hedefleri aday olacağını. Bu şekilde, yapı dosyası yeniden kullanılabilir hedeflere ayrılabilir. Bunu yapan yeni bir hedef oluşturmak, varolan hedeflerden kodun çoğaltılmasına neden olur. Diğer hedefleri yürütmek için bağımlı parametresini kullanabileceğinizi biliyorum ancak her bir hedefin birbirinden bağımsız olmasını istiyorum.

Phing dokümantasyonu bunun nasıl yapılacağı konusunda çok net görünmüyor fakat eminim ki, diğer hedefler arasında hedefler aramak oldukça yaygın bir yol olmalı. Çok teşekkürler.

+0

Im çok ilgi bir şey fark edilmesi gereken – martynthewolf

cevap

25

Tamam, bir av etrafından biraz sonra cevabı buldum. PhingCallTask ​​görevini kullanarak diğer hedeflerin içinden hedefleri çağırabilirsiniz. Kompozit görevin örneği:

<target name="cleanbuild" description="Runs a clean dev build"> 
    <phingcall target="clean" /> 
    <phingcall target="prepare" /> 
    <phingcall target="build" /> 
    <phingcall target="runtests" /> 
</target> 

Belgeleme buradadır:

http://www.phing.info/docs/guide/stable/apbs25.html

+6

dokümantasyon: Kapsam hakkında önemli not: her bir etiketi yeni bir yerel kapsam oluşturur. Böylece, etiketi tamamlandıktan sonra, bu kapsamda ayarlanan tüm özellikler veya diğer değişkenler ortadan kalkar (veya önceki değerine geri döner). – gabrielk

14

Kendi cevap gayet iyi. Yoksa depends özellik kullanmak ve onu daha da kısa yapabilir: Sadece veritabanı geçişleri vb otomatikleştirmek için kendimi Phing bir kullanarak arıyorum bu soruya sonucunu görmekte

<target name="cleanbuild" description="Runs a clean dev build" depends="clean, prepare, build, runtests"></target> 
+0

Bunu yapmak için ilginç bir yol ama çok fazla okunabilir değil ve daha fazla hedef eklemeye başlarsanız çok dağınık görünebilir. Ancak küçük kompozit hedefler için iyi bir seçim. Şerefe. –

+7

Okunabilirliği kabul ediyorum. Buna bağlı bir avantaj, hedeflerden herhangi birinin ayrı olarak çağrıldığında başka bir hedefe bağlı olması durumunda, bağımlı hedeflerin iki kez çağrılmamasını sağlamasıdır. Runtest'leri ayrı ayrı aramak istediğinizi varsayalım. Eğer her zaman 'hazırlık' durumuna bağlıysa, runtest'leri kullanarak cleanbuild çalıştırırken 'hazır' hedefine 2x denir. Eğer 'bağlıdır' kullanırsanız, phing çağrısı başına sadece bir kez çağrılır. – poisson

+1

Bu yaklaşımın cevabım üzerinde tam anlam ifade ettiği bir duruma rastladım. Çalışan görevleri birden çok kez engellemek için çok kullanışlıdır. –

İlgili konular