2013-11-22 8 views
11

मैं Gradle/IntelliJ-विचार के साथ एक बहु मॉड्यूल परियोजना का विकास कर रहा हूँ, और यहाँ अपने प्रोजेक्ट घर की संरचना है:Gradle: एकाधिक जावा के लिए आम संसाधन निर्भरता परियोजनाओं

project/ 
    sub-project-1 
    /main/resources 
    sub-project-2 
    /main/resources 
    data 
    /main/resources 
    /test/resources 

आप मुझे देख सकते हैं कई उप-परियोजनाएं (सभी जावा) हैं, मैं उन्हें कुछ सामान्य संसाधनों ("डेटा" प्रोजेक्ट पर कैसे निर्भर कर सकता हूं, जिसमें कोई कोड नहीं है बल्कि केवल संसाधन हैं), साथ ही साथ अपने स्वयं के अलग संसाधन भी हैं?

यह भी सबसे अच्छा है कि इंटेलिज-विचार स्वचालित रूप से जेटग्रेडल के साथ इन निर्भरताओं को उठा सकता है (जेटग्रेडल प्रत्येक उप प्रोजेक्ट के भीतर डिफ़ॉल्ट ग्रेडल जावा परियोजना निर्भरताओं को ठीक से उठाता है)।

बहुत बहुत धन्यवाद!

उत्तर

5

एक समाधान data परियोजना के लिए भी जावा प्लगइन लागू करने के लिए, और उसके बाद नियमित रूप से परियोजना निर्भरता (जैसे dependencies { runtime project(":data") }) का उपयोग है। हालांकि, परीक्षण संसाधनों को शिपिंग रोकने के लिए इसे थोड़ा सा प्रयास करने की आवश्यकता होगी।

एक और समाधान data एक ग्रैडल प्रोजेक्ट नहीं बनाना है, बल्कि शाब्दिक रूप से अन्य दो परियोजनाओं (sourceSets.main.resources.srcDir "../date/main/resources"; sourceSets.test.resources.srcDir "../data/test/resources") में अपनी संसाधन निर्देशिका शामिल करना है।

+0

दूसरा समाधान बेहतर लगता है। धन्यवाद! –

4

ठीक है, मैंने इसे समझ लिया। यह वास्तव में बहुत आसान है। बस "डेटा" फ़ोल्डर को किसी अन्य प्रोजेक्ट के रूप में देखें और उप परियोजनाओं पर निर्भरता घोषणाएं चाल करेंगी। उदाहरण के लिए:

dependencies { 
    compile project (':data') 
    testCompile project (':data') 
} 
+2

हाय एरिक, मैं बहुत ज्यादा एक ही बात करना चाहता हूँ। क्या आपने वास्तव में एक ग्राफिकल परियोजना के रूप में डेटा प्रोजेक्ट बनाया था? यदि हां, तो क्या आप अपना निर्माण साझा कर सकते हैं। कृपया? – Dave00Galloway

2

दृष्टिकोण मैं ले लिया परियोजना संदर्भ का उपयोग किया गया

sourceSets { 
    main { 
     resources { 
      srcDirs += [ 
       project(':data').sourceSets.main.resources 
      ] 
     } 
    } 
} 
+0

दोस्त आप इतने दुखी जीवन बचतकर्ता हैं। मैं बिना दो मॉड्यूल में दो मॉड्यूल लोड करने के लिए फ़ाइल प्राप्त करने के लिए घंटों तक कोशिश कर रहा था, लेकिन इससे कोई फर्क नहीं पड़ता कि मैंने इसे कहां रखा है, मैंने इसे किस नाम से रखा है, या जब मैंने एक मॉड्यूल से दूसरे मॉड्यूल मॉड्यूल में निष्पादन को स्विच किया है तो मैंने क्लासपाथ से इसे कैसे लोड किया है 'FileNotFoundException' मिला। इस मुद्दे को ठीक किया! – anon58192932

+1

खुश है कि यह किसी की मदद की :) –

+0

मुझे यह कोशिश करते समय एक स्टैक ओवरफ़्लो मिलता है। org.gradle.api.internal.file.DefaultSourceDirectorySet.doGetSrcDirTrees (DefaultSourceDirectorySet.java:141) –

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