2016-08-10 13 views
7

इंटेलिजे 2016.2 का उपयोग करके जोड़ें।
Gradle 2.14.1IntelliJ gradle मॉड्यूल निर्भरता

का उपयोग करते हुए मैं 2 परियोजनाओं, अपने स्वयं के build.gradle फ़ाइलें और अलग निर्देशिका संरचना के साथ प्रत्येक है:

myLib (meant to be jarred and used by others) 
    - build.gradle 
    - settings.gradle 
    - src/main/java/... 

sandbox (spring boot web app) 
    - build.gradle 
    - settings.gradle 
    - src/main/java/... 
    - src/main/resources/... 

उम्मीद है, आप चित्र मिलता है। इंटेलीजे के भीतर, मैं मॉड्यूल संरचना के बाद, एक ही स्तर पर (कोई उप) है:

- myLib 
- sandbox 

सरल अनुरोध ... मैं sandbox अनुप्रयोग के भीतर myLib उपयोग करना चाहते हैं। मैं दोनों को विकसित करने के लिए एक ही परियोजना में दोनों मॉड्यूल चाहता हूं।

मैंने इंटेलिजे के भीतर myLib के लिए sandbox पर मॉड्यूल निर्भरता जोड़ने का प्रयास किया है। कोई पाँसा नहीं। मैंने एक जार संदर्भ जोड़ने की कोशिश की है, कोई पासा नहीं।

मेरा मानना ​​है कि मुझे build.gradle फ़ाइल में निर्भरता जोड़ने की आवश्यकता है लेकिन यह पता नहीं लगा सकता कि कैसे। मैंने compile files '<path to myLib.jar>' इत्यादि की कोशिश की है, कोई पासा नहीं।

+0

क्या आपके पास उन दो मॉड्यूल के बाहर शीर्ष-स्तर 'bulid.gradle' और 'settings.gradle' है? –

+0

नहीं, मैं नहीं करता हूं। एक ही स्तर पर अलग डीआईआर संरचनाएं। – emiles

+0

मुझे एहसास है कि मैं 'सैंडबॉक्स' में 'lib' dir बना सकता हूं और हर बार जब मैं पुनर्निर्मित करता हूं और 'myLib' को झुकाता हूं, तो 'myLib' jar फ़ाइल की प्रतिलिपि बना सकता हूं, लेकिन मैं एक बेहतर समाधान की तलाश में हूं। सोचा IntelliJ और/या Gradle यह मेरे लिए एक साथ रखेगा। – emiles

उत्तर

16

यह जहां एक पुस्तकालय का उपयोग करता है तो एक नमूना अनुप्रयोग है, एक पैटर्न सबसे Gradle परियोजनाओं द्वारा पीछा किया है कि पुस्तकालय

- module/ 
    - build.gradle 
    - src/main/java 
- library/ 
    - build.gradle 
    - src/main/java 
- settings.gradle 
- build.gradle 

कि शीर्ष स्तर के settings.gradle आप

include ':library', ':module' 

और में module/build.gradle में, आप संकलित करते हैं कि प्रोजेक्ट

dependencies { 
    compile project(':library') 
} 

असल में, शीर्ष-स्तर build.gradle, उप परियोजनाओं और चर के सभी सामान्य कॉन्फ़िगरेशन के लिए एक रैपर है। उदाहरण के लिए, उदाहरण के लिए, मेवेन यूआरएल के लिए इसका उपयोग आमतौर पर repositories { } अनुभाग के लिए किया जाता है। उस पर पूरा विवरण Gradle - Multi-project builds

+0

को इंगित करने के लिए धीरे-धीरे उपयोग किए जाने वाले एक डिलीमीटर है। यह उचित और बिल्कुल सही लगता है जो मैं करना चाहता हूं, हालांकि, मुझे IntelliJ के साथ काम करने में कुछ परेशानी हो रही है। धन्यवाद, मैं इसे समाधान के रूप में चिह्नित करूंगा। बस उत्सुक, आप आमतौर पर किस आईडीई का उपयोग करते हैं? – emiles

+0

मैं इंटेलिज आईडीईए का उपयोग करता हूं। मैंने कभी भी एक ग्रैडल जावा प्रोजेक्ट बनाया है, हालांकि –

1

अंत में Gradle 3.1 ने इस समस्या को हल किया है। समग्र बिल्ड अब मूल रूप से समर्थित हैं। अधिक here। संक्षेप में सैंडबॉक्स में settings.gradle फ़ाइल

includeBuild '<PATH>/myLib' 

आप Gradle अपग्रेड नहीं कर सकते, तो इस लाइन को जोड़ने, तो आप के लिए ही उम्मीद स्थानीय Maven रेपो के लिए mylib विरूपण साक्ष्य प्रकाशित करें और सैंडबॉक्स में mavenLocal() जोड़ने के लिए है /build.gradle।

+0

आपका लिंक गायब है कि 'शामिल बिल्ड' निर्देश –

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