2011-08-18 22 views
7

का उपयोग करके बहु जावा परियोजना का निर्माण करना मैं इस पर अपने बालों को फाड़ रहा हूं। मैंने अपनी स्क्रिप्ट को सीधे ग्राडल ट्यूटोरियल पृष्ठों में प्रदान किए गए कोड पर छीन लिया है क्योंकि मुझे लगता है कि मैं या तो मौलिक रूप से गलत कुछ कर रहा हूं या गलत समझा है कि कैसे एक बहु परियोजना अनुप्रयोग को ग्रेडल का उपयोग करके संरचित किया जाना चाहिए।ग्रैडल

मुझे ग्रहण के भीतर तीन जावा परियोजनाएं मिली हैं, जिनमें तीनों में एक build.gradle स्क्रिप्ट है और केवल एक सेटिंग है .gradle स्क्रिप्ट।

Scripts 
-- build.gradle 
-- settings.gradle 
Database 
-- build.gradle 
Services 
-- build.gradle 

मैं 'डाटाबेस' और 'सेवा' परियोजना 'स्क्रिप्ट' परियोजना में निर्माण स्क्रिप्ट का उपयोग कर बनाने का प्रयास कर रहा हूँ: संरचना इस प्रकार है। परियोजना पेड़ बनाने के लिए, मैं settings.gradle में निम्नलिखित कोड है:

include 'Services', 'Database' 

project (':Services').projectDir = new File(settingsDir, "../Services") 
project (':Database').projectDir = new File(settingsDir, "../Database") 

बहु परियोजना ट्यूटोरियल में कोड (Gradle दस्तावेज़) प्रतिकृति, मैं प्रिंट करने के लिए निर्माण स्क्रिप्ट से प्रत्येक पाने के लिए कोशिश कर रहा हूँ यह सुनिश्चित करने के लिए कि सब कुछ ठीक से स्थापित है, कुछ पाठ बाहर करें। मेरा अंतिम लक्ष्य निर्भरता है कि 'ग्रहण क्लासपाथ' निष्पादित होने पर निर्भरता सही ढंग से बनाई जाए, ताकि सभी परियोजनाएं ग्रहण के भीतर सही ढंग से संकलित हो जाएं। हालांकि, जैसा कि मैंने उम्मीद की थी, पाठ मुद्रित नहीं किया जा रहा है!

नीचे क्या तीन निर्माण स्क्रिप्ट के भीतर निहित है कर रहे हैं:

स्क्रिप्ट build.gradle

allprojects { 
    task hello << { task -> println "I'm $task.project.name" } 
} 

subprojects { 
    hello << {println "- I depend on Scripts"} 
} 

डाटाबेस build.gradle

hello.doLast { 
    println "- I'm inside database" 
} 

सेवाएं build.gradle

hello.doLast { 
    println "- I'm inside services" 
} 

'स्क्रिप्ट' परियोजना के भीतर, जब मैं रन 'Gradle -q हैलो', मैं निम्नलिखित परिणाम प्राप्त:

I'm Scripts 
I'm AnprDatabase 
- I depend on Scripts 
I'm Database 
- I depend on Scripts 

पाठ क्यों है '- मैं डेटाबेस के अंदर हूँ' और 'अंदर -मैं सेवाएं 'दिखाई नहीं दे रही हैं? मैं इसके द्वारा थोड़ा परेशान हूँ। मैं केवल यह अनुमान लगा सकता हूं कि मेरे प्रोजेक्ट स्ट्रक्चर के साथ कुछ करना है। क्या कोई यह पुष्टि कर सकता है कि यह मामला है? यदि नहीं, तो समस्या क्या है? जैसा कि बताया गया है, मैंने अपनी स्क्रिप्ट को इस सरल उदाहरण पर वापस कर दिया है, क्योंकि मैं एक ही संरचना का उपयोग करके प्रत्येक प्रोजेक्ट बनाने स्क्रिप्ट के भीतर निर्भरता प्राप्त नहीं कर सका।

किसी भी मदद की पेशकश की बहुत सराहना करते हैं।

+0

मेरे लिए ठीक काम करता है, 'gradle-1.0-milesestone-3' – axtavt

+0

मैं धीरे-धीरे के समान संस्करण का उपयोग कर रहा हूं। क्या आपके आवेदन में जावा परियोजनाएं समान संरचना में हैं? – ScreamingMage

+0

आपके लिए एक और सवाल है, क्या आपकी बिल्ड स्क्रिप्ट आपके समकक्ष 'स्क्रिप्ट' प्रोजेक्ट के भीतर से चल रही है या यह तीन परियोजनाओं की जड़ पर है? मैं 'स्क्रिप्ट्स' प्रोजेक्ट – ScreamingMage

उत्तर

4

मैंने यह पता लगाने में कामयाब रहा है कि यह क्यों काम नहीं कर रहा है। यह मेरे हिस्से पर एक मूर्ख त्रुटि थी। 'डेटाबेस' और 'सेवाएं' प्रोजेक्ट मेरी 'स्क्रिप्ट' प्रोजेक्ट के समान निर्देशिका में नहीं थे। मैंने इन परियोजनाओं को एक गिट रिपोजिटरी में चेक किया था, जो स्थानीय ग्रहों को मेरी ग्रहण कार्यक्षेत्र से बाहर और स्थानीय गिट भंडार में कॉपी करता है। मैंने अपनी स्क्रिप्ट्स प्रोजेक्ट में 'स्क्रिप्ट्स' प्रोजेक्ट की जांच नहीं की थी, इसलिए यह अभी भी मेरे ग्रहण कार्यक्षेत्र में रह रहा था। अब यह बहुत स्पष्ट लगता है कि यह क्यों काम नहीं करता! सेटिंग्स में अन्य परियोजनाओं के पथ में मेरी 'स्क्रिप्ट' प्रोजेक्ट की जांच करना और बदलना .gradle ने समस्या को ठीक कर दिया है।

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

तो, हमेशा सुनिश्चित करें कि परियोजनाओं सहित आपकी सेटिंग्स में सही निर्देशिका में नेविगेट करना! अन्यथा, जैसा कि मैंने किया था, आप गलत हो सकते हैं।

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