2011-07-16 14 views
13

क्या फ़िंग में समूह लक्ष्य करने का कोई तरीका है? मेरे पास कई लक्ष्य हैं जिन्हें विभिन्न आदेशों और संयोजनों में चलाकर उनका पुन: उपयोग किया जा सकता है।फ़िंग में लक्ष्य कैसे समूहित करें?

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

या एक रेपो से एक देव का निर्माण अद्यतन करने के लिए:

$ phing update 
$ phing runtests 

वहाँ इन लक्ष्यों समूह के लिए एक तरीका है कि उन्हें एक आदेश के रूप में चलाने के लिए है उदाहरण के लिए एक नया देव निर्माण बनाने के लिए? मुझे पता है कि आप श्रृंखला लक्ष्यों जैसे सकता हूँ:

$ phing clean prepare build runtests 
$ phing update runtests 

लेकिन आदर्श मैं जैसे एक कमांड को चलाने के लिए करना चाहते हैं:

$ phing cleanbuild 

यह सभी चार लक्ष्यों को चलाना शामिल है। इस तरह बिल्ड फ़ाइल पुन: प्रयोज्य लक्ष्यों में विभाजित हो सकती है। एक नया लक्ष्य बनाना जो इसके परिणामस्वरूप मौजूदा लक्ष्यों से कोड का डुप्लिकेशंस होगा। मुझे पता है कि आप अन्य लक्ष्यों को निष्पादित करने के लिए निर्भर पैरामीटर का उपयोग कर सकते हैं, लेकिन मैं चाहता हूं कि प्रत्येक लक्ष्य एक-दूसरे से स्वतंत्र हो।

फ़िंग प्रलेखन यह कैसे करना है इस पर बहुत स्पष्ट प्रतीत नहीं होता है, लेकिन मुझे यकीन है कि अन्य लक्ष्यों के भीतर लक्ष्य को कॉल करना संभव है क्योंकि यह चीजों को करने का एक बहुत ही आम तरीका होना चाहिए। बहुत धन्यवाद।

+0

इम बहुत ही इस प्रश्न के परिणाम को देखने में रुचि के रूप में मैं सिर्फ अपने आप को Phing डेटाबेस माइग्रेशन आदि स्वचालित करने के लिए एक का उपयोग कर रहा हूँ – martynthewolf

उत्तर

25

ठीक है, थोड़ी देर के शिकार के बाद मुझे जवाब मिला। आप PhingCallTask ​​कार्य का उपयोग करके अन्य लक्ष्यों के अंदर से लक्ष्य को कॉल कर सकते हैं। एक समग्र कार्य का एक उदाहरण:

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

प्रलेखन यहाँ है:

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

+6

एक बात से नोट करने के लिए प्रलेखन: दायरे के बारे में महत्वपूर्ण नोट: प्रत्येक टैग एक नया स्थानीय दायरा बनाता है। इस प्रकार, टैग पूर्ण होने के बाद, उस दायरे के अंदर सेट की गई किसी भी गुण या अन्य चर मौजूद रहेंगी (या उनके पिछले मान पर वापस आ जाएंगी)। – gabrielk

14

आपका अपना जवाब ठीक है। या फिर आप depends विशेषता का उपयोग और यह भी कम कर सकते हैं:

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

यह करने का एक दिलचस्प तरीका है लेकिन यह बहुत पठनीय नहीं है और यदि आप अधिक लक्ष्य जोड़ना शुरू करते हैं तो बहुत गन्दा लग सकता है। यद्यपि छोटे समग्र लक्ष्यों के लिए अच्छा विकल्प। चीयर्स। –

+7

मैं पठनीयता के बारे में सहमत हूं। निर्भरता का एक लाभ यह है कि अगर किसी भी लक्ष्य को अलग-अलग कहा जाता है तो किसी अन्य लक्ष्य पर निर्भर करता है, तो आपको निर्भर लक्ष्य को दो बार बुलाया नहीं जाता है। मान लीजिए कि आप रनटेस्ट को अलग से कॉल करना चाहते हैं। यदि यह हमेशा 'तैयार' पर निर्भर करता है, तो रनटेस्ट में का उपयोग करके क्लीनबिल्ड चलाने पर 'तैयार' लक्ष्य को 2x कहा जा सकता है। यदि आप 'निर्भर' का उपयोग करते हैं तो इसे केवल प्रति फ़िंग आमंत्रण के लिए बुलाया जाता है। – poisson

+1

मैं बस एक ऐसी स्थिति में आया जहां इस दृष्टिकोण ने मेरे उत्तर पर पूर्ण ज्ञान दिया। कई बार चल रहे कार्यों से बचने के लिए बहुत उपयोगी है। –

संबंधित मुद्दे