2015-09-16 19 views
8

मुझे ग्रहण के लिए बिल्डिंग को कॉन्फ़िगर करने में कुछ परेशानी हो रही है। वर्तमान में मेरे पास ग्रहण में हमेशा 50 परियोजनाएं खुली हैं, लेकिन मैं केवल उन परियोजनाओं को ले जाना चाहता हूं जिन पर मैं ग्रहण में सक्रिय रूप से काम कर रहा हूं, और अन्य परियोजनाएं उनकी निर्भरता को हल करने के लिए एक मेवेन भंडार का उपयोग करेंगी।ग्रैडल + बिल्डशिप - जेएआर और परियोजनाओं के बीच स्विच निर्भरता

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

जिस व्यवहार के बारे में मैं बात कर रहा हूं वह विस्तृत है here

क्या बिल्डशिप का उपयोग करने का कोई तरीका है? या मैं एक और Gradle ग्रहण प्लगइन का उपयोग करना चाहिए?

उत्तर

8
  1. ग्रैडल 3.1 में एक नया composite build support सुविधा जोड़ा गया है। यह सुविधा एक गेम परिवर्तक है और एक बार में एक से अधिक परियोजनाओं पर काम करना आसान बनाता है।

  2. आप स्थानीय परियोजना निर्भरताओं के साथ भंडार निर्भरताओं को स्वैप करने के लिए dependency substitution rules का उपयोग कर सकते हैं।

  3. यदि प्रत्येक प्रोजेक्ट अपने स्वयं के अलग गिट/उपवर्तन भंडार के भीतर है तो आप परियोजनाओं के 'गर्व' को प्रबंधित करने के लिए prezi pride का उपयोग कर सकते हैं। आप बिल्डिंग में (गतिशील रूप से जेनरेट) बहु मॉड्यूल निर्माण आयात कर सकते हैं।

  4. आप buildship के बजाय eclipse plugin उपयोग करने के लिए आप whenMerged या withXml हुक का उपयोग उत्पन्न .classpath फ़ाइलें tweak करने के लिए अपने कार्यक्षेत्र में आने वाले प्रोजेक्ट को इंगित करना चाहता है तो (ध्यान दें ग्रहण अब कमांड लाइन Gradle के लिए अलग तरह का निर्माण होगा)।

2

पूरा होने के लिए, मैं लांस जावा द्वारा सुझाए गए निर्भरता प्रतिस्थापन के साथ आगे बढ़ गया। इस दृष्टिकोण के निम्नलिखित फायदे हैं:

  • किसी तृतीय पक्ष सॉफ़्टवेयर की आवश्यकता नहीं है।
  • आईडीई स्वतंत्र है। हम सीधे .classpath फ़ाइल के साथ tinkering नहीं कर रहे हैं, हम ग्रहण प्लगइन (या किसी अन्य आईडीई प्लगइन) इसे संभालने दें।
  • अन्य प्लगइन्स वास्तविक निर्भरता तक पहुंच सकते हैं जिसका हम उपयोग करना चाहते हैं।

    हालांकि, वहाँ है कि दृष्टिकोण के साथ कुछ gotchas हैं। इसे build.gradle फ़ाइल में या build.gradle फ़ाइल से कॉल करने वाली विधि में किया जाना चाहिए।

  • आपको वर्कस्पेस रीफ्रेश करने की आवश्यकता है।
+0

अगर मुझे गलत लगता है तो मुझे सही करें, लेकिन यह समाधान केवल ग्रेडल प्रोजेक्ट के भीतर ही काम करता है। क्या होगा यदि मुझे वर्कस्पेस प्रोजेक्ट के साथ निर्भरता को प्रतिस्थापित करने की आवश्यकता है जो कि ग्रेड निर्माण का हिस्सा नहीं है? – user1482710

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