2011-09-15 14 views
7

मेरे पास एक जावा प्रोजेक्ट है, मानक जावा बिल्डर के साथ यह एकमात्र निर्माता है। साथ ही, निर्माण स्वचालित रूप से निर्माण करने के लिए कॉन्फ़िगर किया गया है।ग्रहण और वृद्धिशील-प्रोजेक्ट में प्रोजेक्ट में बिल्डर्स जोड़ना

मुझे समझ को क्या कहना चाहेंगे है परिस्थितियों का निर्माण जब मैं इस परियोजना (project -> properties -> builders) के लिए एक चींटी निर्माण जोड़ने जिसके परिणामस्वरूप। मैं क्या उम्मीद करूंगा, यह है कि हर बार जब मैं अपने जावा स्रोत में बदलाव करता हूं, तो जावा बिल्डर और मेरी चींटी बिल्ड दोनों ही चलेंगे, लेकिन ऐसा लगता है कि मेरी चींटी बिल्ड रन नहीं है।

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

नोट, अगर मैं मैन्युअल रूप से निर्माण का आह्वान करता हूं, यानी Project -> Build All, चींटी निर्माण चलता है, यानी मैं फिर कंसोल में आउटपुट देखता हूं।

तो, चींटी निर्माण क्यों नहीं करता है मैंने स्वचालित भवन के साथ भाग लिया है? ध्यान दें, मैं जरूरी नहीं कि यह वृद्धिशील काम करने में सक्षम हो, क्योंकि यह इसके लिए नहीं बनाया गया है, लेकिन मैंने सोचा होगा कि जावा बिल्डर आग लगने पर यह बंद हो जाएगा? क्या मैं कुछ भूल रहा हूँ?

+0

यह लिंक (http://www.eclipse.org/articles/Article-Builders/builders.html) है कि शायद मेरी चींटी निर्माण चल रहा है, पृष्ठभूमि में, और आउटपुट बस में नहीं आ रहा है सुझाव है कि लगता है कंसोल यह भी सुझाव देता है कि स्वचालित और बिल्ड सभी बिल्ड दोनों "incremental" हैं, जिसमें निर्माता को परिवर्तनों का डेल्टा प्राप्त होगा, यह इसके कार्यों को क्रमशः लागू कर सकता है। । । लेकिन अगर ऐसा है, तो मुझे समझ में नहीं आता कि मेरी चींटी build.xml को उस डेल्टा जानकारी तक पहुंच कैसे होगी। । । – chad

+0

दोस्त !! इस बारे में इंटरनेट पर कुछ भी नहीं है !! मैं इस निर्माता के बारे में दीवार के खिलाफ अपने सिर को टक्कर लगी हूं, मैंने लिखा है, और काम नहीं करता !!! क्या आपको अपने क्यू का जवाब मिल गया? –

+2

संख्या। आपको मेरे प्रश्न को ऊपर उठाना चाहिए और शायद यह कुछ और जानकार ग्रहण लोगों का ध्यान आकर्षित करेगा। – chad

उत्तर

1

चींटी निर्माता, या उस मामले के लिए किसी भी अन्य निर्माता, के पास परियोजना बनाने के लिए कई विधियां हैं। जब ग्रहण में कोई निर्माण होता है, तो build(int kind, Map<String, String> args, IProgressMonitor monitor) सभी सक्रिय बिल्डरों की विधि को कॉल किया जाता है, लेकिन, विभिन्न प्रकार के निर्माण होते हैं, कि कोई भी निर्माता build विधि में जांचता है। निर्माण के प्रकार के होते हैं:

protected IProject[] build(int kind, Map<String, String> args, IProgressMonitor monitor) throws CoreException { 
    if (kind == FULL_BUILD) { 
     fullBuild(monitor); 
    } else { 
     IResourceDelta delta = getDelta(getProject()); 
     if (delta == null) { 
      fullBuild(monitor); 
     } else { 
      incrementalBuild(delta, monitor); 
     } 
    } 
    return null; 
} 

आप देख सकते हैं, एक बिल्डर का निर्माण किसी खास प्रकार के लिए प्रतिक्रिया करने के लिए तय कर सकते हैं, और यहां तक ​​कि अलग तरह से कार्य:

FULL_BUILD 
AUTO_BUILD 
INCREMENTAL_BUILD 
CLEAN_BUILD 

यहाँ निर्माण का एक उदाहरण वाक्य रचना है विभिन्न प्रकार के निर्माण के लिए, इसलिए, मेरा अनुमान है कि चींटी निर्माता लागू किया गया है ताकि यह केवल पूर्ण निर्माण पर प्रतिक्रिया करे, न कि वृद्धिशील बिल्ड।

0

क्या आपने अपने एंटी बिल्डर को "ऑटो" निर्माण के दौरान चलाने के लिए कॉन्फ़िगर किया था? ऐसा करने के लिए, निर्माता के गुणों का चयन करें, Targets पृष्ठ पर जाएं और Auto Build के लिए Set Targets का उपयोग करें।

मैं एक चींटी बिल्डर कि (संपादित स्रोत फ़ाइलों की बचत पर इतना भी) बनाता है के सभी प्रकार पर मेरे ग्रहण परियोजना में चल रहा है, और मैं और कुछ बदल रहा है याद नहीं है।

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