ग्रेडेल केवल एक मॉड्यूल का निर्माण करते हैं


152

मेरे पास एक मल्टीपल मॉड्यूल ग्रेडल बिल्ड है। मैं रूट का उपयोग करके एक मॉड्यूल के लिए लक्ष्यों को निष्पादित करना चाहता हूं। Ex:

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

इसलिए प्रत्येक लक्ष्य को रूट से मॉड्यूल को निर्दिष्ट करने से चलाया जा सकता है। क्या ऐसा करने के लिए एक सरल तरीका है?

धन्यवाद !


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } ...। यह आप क्या हासिल करना चाहते हैं?
पेप्च

@ पेप्च, क्या आप स्पष्ट कर सकते हैं? मैं अपने ऐप के अपडेट को पुश करना चाहता हूं, जिसमें एअर है लेकिन इसे लाइब्रेरी के पुनर्निर्माण के बिना केवल ऐप में बदलाव का निर्माण करना है।
the_Martian

जवाबों:


302

किसी विशिष्ट उपप्रकार के कार्य को निष्पादित करने के लिए, उसका कार्य पथ निर्दिष्ट करें । उदाहरण के लिए:

gradle :ABC:build

प्रमुख :जड़ परियोजना के लिए खड़ा है। ABCउपप्रोजेक्ट है, और buildउस परियोजना में एक कार्य है।


4
आप कमांड लाइन के बजाय कॉन्फ़िगर के माध्यम से कैसे नियंत्रित कर सकते हैं केवल कई में से एक सबप्रोजेक्ट को इकट्ठा करने के लिए? Google की रिलीज़ पाइपलाइनों के लिए, यह रूट प्रोजेक्ट में एक "ग्रेडल क्लीन असेंबल" बंद कर देता है। मेरे लिए, कि AppEngine और Android बनाता है की कोशिश करता है। रिलीज़ पाइपलाइन एंड्रॉइड बिल्ड पर विफल हो जाएगी क्योंकि इसमें एसडीके स्थापित नहीं है, एक क्षणिक मशीन के लिए समझ में आता है। इसके अलावा, ऐसा नहीं लगता है कि रिलीज़ पाइपलाइन किसी भी कॉन्फ़िगरेशन विकल्प प्रदान करती है।
23

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

gradle :ABC:clean :ABC:build
स्टैनिस्लावको

वर्गीकृत बिल्ड -p मॉड्यूलए बेहतर है, यह मॉड्यूल की निर्भरता को संभाल लेगा।
जॉन

84

जल्दी रास्ता मिल गया

gradle build -p moduleA

मॉड्यूलए मॉड्यूल की निर्देशिका है।

इसके बाद के संस्करण कमांड moduleAअपने सभी submodules बनाता है , और moduleAइसका पथ होना चाहिए


4
उपरोक्त कमांड एक मडले का निर्माण करता है और यह सब सबमॉड्यूल है, और मॉड्यूलए यह पथ होना चाहिए gradle build -p path\pathSt\moduleA
विराज

1
मेरे पास सबप्रोजेक्ट्स के लिए एक रैपर है, जिसकी अपनी कोई भी फाइल नहीं है। चयनित उत्तर के विपरीत, यह मेरे लिए काम करता है। टिप्पणी में स्पष्टीकरण के लिए भी धन्यवाद, क्या आप इसे उत्तर में जोड़ सकते हैं?
वलसाक

24

मैक ओएस पर, एकमात्र संस्करण जो मेरे साथ काम कर रहा है:

./gradlew  ABC:build

ABC मॉड्यूल का नाम है

(यह लिनक्स पर भी काम कर सकता है)


5

यहाँ छवि विवरण दर्ज करें

यदि आपका आईडीई एंड्रॉइड स्टूडियो है, तो एक सरल तरीका है। बस उस मॉड्यूल फ़ोल्डर को चुनें जिसे आप संकलित करना चाहते हैं, फिर बिल्ड पर क्लिक करें और मेक मॉड्यूल 'अपना मॉड्यूल फ़ोल्डर' चुनें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.