2008-12-17 9 views
13

build.xml में परीक्षण और लक्ष्य बनाएं। परीक्षण लक्ष्य स्पष्ट रूप से लक्ष्य पर निर्भर करता है।क्या चींटी निर्भरता को बाईपास करने का एक तरीका प्रदान करती है?

मैं केवल परीक्षण लक्ष्य कैसे चला सकता हूं, अस्थायी रूप से build.xml फ़ाइल को संशोधित किए बिना संकलन को छोड़कर?

मैं पूछ रहा हूं क्योंकि संकलन बहुत लंबा है, और निरंतर एकीकरण सर्वर द्वारा अद्यतित रखा गया है; और मैं यूनिट परीक्षणों के साथ किसी मुद्दे के बाद पीछा कर रहा हूं।

उत्तर

19

नहीं, आप बिल्ड फ़ाइल को संशोधित किए बिना इसे छोड़ नहीं सकते हैं।

इस मुद्दे को हल करने के लिए मैं अपनी परियोजनाओं में यही करता हूं। प्रत्येक सार्वजनिक लक्ष्य के लिए मैं इसके सामने "डू-" के साथ एक निजी लक्ष्य तैयार करूंगा। निजी लक्ष्य की कोई निर्भरता नहीं है, और सार्वजनिक लक्ष्य पर निर्भरता के रूप में "कार्य" लक्ष्य है।

उदाहरण के लिए:

<target name="compile" depends="init, do-compile" description="Compiles all of the source code" /> 

<target name="do-compile"> 
     <javac destdir="${classes.dir}" debug="true" encoding="ISO-8859-1"> 
      <src refid="src.path" /> 
      <include name="*.java" /> 
      <classpath refid="external.libraries.classpath" /> 
     </javac> 
</target> 
+1

लगता है जैसे हम इसी तरह से काम करते हैं - यह जानना अच्छा है कि मैं इस मोर्चे पर अकेला नहीं हूं :) –

4

व्यक्तिगत रूप से मुझे सहायता से अधिक तरीके से प्राप्त करने के लिए चींटी में निर्भरता सामग्री मिली है। मैं आमतौर पर लक्ष्यों के दो सेट सेट करता हूं - जो वास्तव में सामान (कोई निर्भरता के साथ) करते हैं और फिर लक्ष्य केवल निर्भरताएं हैं। इस तरह आप आसानी से एक ही लक्ष्य चला सकते हैं, और आप आसानी से पूरे सूट को भी चला सकते हैं। यह व्यावहारिक (विचारधारात्मक के बजाय) मेरे दृश्य में उपयोग करता है।

+0

अच्छा चाल, धन्यवाद। – philant

0

अस्थायी रूप से निर्भरता को "हटा दें"? यदि कोड पहले से बनाया गया है तो आपकी सभी फाइलें उपलब्ध होनी चाहिए, नहीं? - ओह, बस देखा कि आप फ़ाइल को बदल नहीं सकते हैं, हम्म, आप स्थानीय रूप से पहले ही नौकरी क्यों नहीं चलाते?

2

यदि कोई कोड नहीं बदला गया है तो एक अच्छी तरह लिखित बिल्ड लक्ष्य को कुछ भी पुनर्निर्माण करने की आवश्यकता नहीं होगी। तो तथ्य यह है कि परीक्षण लक्ष्य इस पर निर्भर करता है कि यह काफी हद तक अप्रासंगिक होना चाहिए। यदि आप पंक्ति में दो बार लक्ष्य लक्ष्य चलाते हैं और यह दूसरी बार पुनर्निर्माण करने का प्रयास करता है, तो आप जांच कर सकते हैं कि यह ऐसा क्यों कर रहा है।

लक्ष्य निष्पादित करने से बचने का सरल तरीका कुछ संपत्ति के नाम पर लक्ष्य की "जब तक" विशेषता सेट करना है। यदि आप एंटी चलाते समय कमांड लाइन पर इस प्रॉपर्टी को सेट करते हैं, तो यह उस लक्ष्य को बाईपास कर देगा।

+0

सहमत हैं, लेकिन चींटी का उपयोग सिर्फ बड़े कोडबेस के मेकफ़ाइल-आधारित संकलन को बूटस्ट्रैप करने के लिए किया जाता है। – philant

28

unless विशेषता का उपयोग करें।

<target name="test" unless="dont.run.tests"> 

आप "परीक्षण" चलाने के लिए, नहीं चाहते हैं बस

चींटी -Ddont.run.tests = सच

अगर आप परीक्षण चाहते हैं यह अपरिभाषित किया जाना चाहिए चलाने के लिए। चींटी सिर्फ यह जांचती है कि क्या यह बिल्कुल परिभाषित है या नहीं। इसके अलावा, एक if विशेषता है जो बातचीत करता है।

दोनों पर article है।

+1

यह सही दृष्टिकोण है, सही उत्तर के रूप में चिह्नित किया जाना चाहिए –