2011-10-03 14 views
8

वहाँ सॉफ्टवेयर का एक टुकड़ा (या ग्रहण प्लग-इन) जो,चींटी लक्ष्य निर्भरता ट्री व्यूअर

लक्ष्य को देखते हुए, मुझे एक पेड़ के रूप में लक्ष्य निर्भरता देखने की अनुमति होगी है?

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

ग्रहण प्लग-इन होने की आवश्यकता नहीं है। हालांकि, जब कोई नोड क्लिक किया जाता है तो अच्छा होगा, उस लक्ष्य के स्रोत को एक संपादक पर फेंक देगा।

उत्तर

4

प्रश्न ant debugging in Eclipse पर सवाल के समान।

Apache's ANT manual के आधार पर, आप -projecthelp विकल्प से शुरू कर सकते हैं। इसके बाद यह और अधिक कठिन हो सकता है क्योंकि विभिन्न लक्ष्यों में पार निर्भरता हो सकती है और इस प्रकार पदानुक्रम को पेड़ के रूप में प्रतिनिधित्व करना असंभव हो सकता है।

आप पर्यावरण चर का पता लगाने के लिए build.xml को संशोधित कर सकते हैं, उदा। NO_PRINT जिसे प्रत्येक प्रोजेक्ट लक्ष्य में परीक्षण किया जाता है और यदि पाया जाता है, तो केवल प्रोजेक्ट नाम प्रिंट करें और कुछ भी नहीं। परियोजना के लिए निर्भरता बनी रहेगी और एएनटी को पेड़ पर चलने और विभिन्न लक्ष्यों के प्रिंटआउट का उत्पादन करने की इजाजत दी जाएगी जो छूएंगे।

+1

निष्पक्ष होने के लिए, परिपत्र निर्भरता उसी तरह के रूप में में संभाला जा सकता है पर्ल का डेटा डम्पर सर्कुलर संदर्भों को संभालता है, बस पहले नामित घटना के सूचक के साथ। यह वास्तव में एक सीधा काम होना चाहिए और चींटी में बनाया जाना चाहिए। –

4

मैं दाऊद की तरह एक ही बात करना चाहता था, लेकिन, मैं सिर्फ एक (अजगर) कोड का सा लेखन समाप्त हो गया:

from xml.etree import ElementTree 

build_file_path = r'/path/to/build.xml' 
root = ElementTree.parse(build_file_path) 

# target name to list of names of dependencies 
target_deps = {} 

for t in root.iter('target'): 
    if 'depends' in t.attrib: 
    deps = [d.strip() for d in t.attrib['depends'].split(',')] 
    else: 
    deps = [] 
    name = t.attrib['name'] 
    target_deps[name] = deps 

def print_target(target, depth=0): 
    indent = ' ' * depth 
    print indent + target 
    for dep in target_deps[target]: 
    print_target(dep, depth+1) 

for t in target_deps: 
    print 
    print_target(t) 
+0

मेरा build.xml में एक और शामिल है, इसलिए मैंने एक चेक जोड़ा: यदि target_deps में लक्ष्य: print_target पर – TimP

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