2009-05-28 17 views
8

मुझे पता है कि एएनटी में एक ही लक्ष्य कैसे चलाया जाए, लेकिन यह "निर्भर करता है" विशेषता भी जांचता है और लक्ष्य से पहले चलता है। क्या इस एएनटी फ़ाइल को ढूढ़ने या इस तरह से रोकने के लिए कोई तरीका है ताकि मैं इसे और अधिक आसानी से कर सकूं?एएनटी - एक ही लक्ष्य चलाएं लेकिन निर्भरताओं के बिना

उत्तर

11

लक्ष्य के "बिना किसी" संस्करण बनाएं। यदि आप

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

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

को

<target name="A" depends="B"> 
    ... 
</target> 
बदलें

था अब आप एक के रूप में सामान्य (जो तब बी बंद को सक्रिय कर देगा AwithoutDeps) या सिर्फ स्पष्ट रूप AwithoutDeps फोन कॉल कर सकते हैं और कोई deps निकाल दिया। [ध्यान दें कि "निर्भर करता है" क्रम में निर्भरता कॉल]

बेशक

, इन की तुलना में कुछ बेहतर नामों का चयन;)

+0

मेरे समाधान के समान ही - मुझे लगता है कि अंतर सिर्फ शैली का सवाल है। यह चींटी की निर्भरता कार्यक्षमता का शोषण करता है, मेरा समाधान "encapsulation" कार्यक्षमता का शोषण करता है। – Jared

+0

धन्यवाद! यह प्रतिलिपि बनाने और पेस्ट करने से क्लीनर लगता है। – GreenieMeanie

+0

@ जेरेड - मैंने एंटीकॉल के बारे में भी सोचा, लेकिन यह अधिक महंगी AFAIK है, क्योंकि यह गुणों की एक प्रति स्थापित करता है और इस तरह। यह नहीं कि यह एक बड़ा सौदा है ... –

2

मुझे लगता है कि यहां आपकी एकमात्र साधारण पसंद सिर्फ प्रश्न में लक्ष्य की प्रतिलिपि बनाना होगा और इसकी निर्भरता नहीं होगी।

+0

मैं अभी निर्भर गुणों को हटा रहा हूं (जो लगभग एक ही चीज़ है), लेकिन मैं संभावित रूप से क्लीनर समाधान के लिए सोच रहा हूं। – GreenieMeanie

+0

यह चींटी कमांड लाइन के लिए एक विकल्प होने के लिए अच्छा होगा। – user959690

1

मैं कुछ इस तरह करना होगा:

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

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

एक संभावना यह उपयोग करने के लिए है निर्भरता लक्ष्य (0) पर if या unless विशेषता। उदाहरण के लिए:

<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> 

अब आप चींटी -Ddependency1.disabled=true और/या -Ddependency2.disabled=true साथ निर्भरता आप नहीं चाहते बाहर छोड़ने के लिए चला सकते हैं, लेकिन डिफ़ॉल्ट अभी भी उन्हें शामिल करने के लिए किया जाएगा।

और निश्चित रूप से, यदि आपके लिए यह आसान है तो आप बस "वैश्विक" dependencies.disabled संपत्ति प्राप्त कर सकते हैं।

आप इस व्यवहार (जहां निर्भरता डिफ़ॉल्ट रूप से बाहर रखा गया है) की बातचीत क्या करना चाहते हैं, तो बस ifunless के बजाय का उपयोग करें (और इस तरह के बजाय "अक्षम" "dependency1.enabled" संपत्ति नाम है) ।

-1

मैंने मैक्रो को कोड के टुकड़े के साथ बनाया, जो मैं चाहता हूं। फिर 2 लक्ष्य बनाए, 1 "मैग 1" के साथ मैक्रो मैक्रो, दूसरा "arg2" के साथ। आप एसीपेटिंग पैरामीटर के बिना मैक्रो भी बना सकते हैं।

+0

एक जवाब दिखाएं कि समस्या को कैसे हल किया जाए। दिखाओ कि आपने क्या किया –

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