मैं काफी अच्छा Gradle विन्यास किया था, कि सब कुछ ठीक बनाया देता है। लेकिन मेरे बहु-परियोजना निर्माण की परियोजनाओं में से एक ने उनसे बाकी हिस्सों से व्युत्पन्न किया, कि मैं खुशी से इसे किसी अन्य गिट रेपो में ले जाऊंगा और इसे संभालने के लिए सबमिड्यूल को कॉन्फ़िगर कर दूंगा।Gradle multiproject "परियोजना पर नहीं मिल सका संपत्ति 'sourceSets'" त्रुटि
सबसे पहले, मैंने परियोजना और उसके संसाधनों को सबफ़ोल्डर Libraries/MovedProject
पर स्थानांतरित कर दिया। धीरे-धीरे विन्यास में कुछ लाइनों को बदलने के बाद यह ठीक काम करता है। लेकिन फिर मैंने इस परियोजना के लिए एक नया निर्माण लिखने का फैसला किया, और मुख्य कॉन्फ़िगरेशन को मुख्य से स्थानांतरित कर दिया।
और यह वह जगह है जहां सब कुछ काम करना बंद कर दिया। जब मैं किसी काम यह हमेशा समाप्त होता है Could not find property 'sourceSets' on project ':Libraries/MovedProject'
साथ कॉल करने के लिए प्रयास करें। रेखा जो इसके लिए जिम्मेदार है:
dependencies {
...
if (noEclipseTask) {
testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
}
}
जो मैं परीक्षण जिसमें मैं अन्य परियोजनाओं से कक्षाओं का उपयोग चलाने के लिए इस्तेमाल करते हैं। यदि मैं उस रेखा को हटा देता हूं, तो बिल्ड केवल तब विफल हो जाती है जब यह प्रोजेक्ट के संकलित टेस्टजावा कार्य तक पहुंच जाती है जो MovedProject का उपयोग करती है। अगर मैं उस लाइन को हटाने और gradle :Libraries/MovedLibrary:properties
फोन मैं देख सकता हूँ:
...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: [email protected]
...
जबकि gradle :Libraries/MovedLibrary:build
सही ढंग से बनाता है।
निर्देशिका:
- /SomeMainProject1
- /SomeMainProject2
- /SomeMainProject3
- /पुस्तकालय
- /MovedProject
- build.gradle
- dependencies.gradle
- project.gradle
- tasks.gradle
सब कुछ वर्तमान में मैं मिल गया है निम्नलिखित के रूप में स्थापित
- /MovedProject
- /बिल्डर
- dependencies.gradle
- परियोजना .gradle
- tasks.gradle
- build.gradle
- settings.gradle
सेटिंग्स।MovedProject के लिए Gradle
include Libraries/MovedProject, SomeMainProject1, SomeMainProject2, SomeMainProject3
sourceSets
Libraries/MovedProject/project.gradle
में परिभाषित कर रहे हैं:sourceSets { main { java { srcDir 'src' srcDir 'resources' } resources { srcDir 'resources' } } test { java { srcDir 'test/unit' } } }
निर्भरता करता है कि sourceSets.test.output के उपयोग
Builder/dependancies.gradle
में जमा हो जाती है, और प्रत्येक परियोजना MovedProject जरूरत है चलाने के लिए सेट परीक्षण:project(':SomeMainProject1') { dependencies { ... if (noEclipseTask) { testCompile project(':Libraries/net.jsdpu').sourceSets.test.output } } }
उस त्रुटि से छुटकारा पाने के लिए सबसे आसान तरीका क्या होगा और वर्तमान निर्देशिका संरचना के साथ स्नातक निर्माण परियोजनाएं बनाना होगा? मैं समझना चाहूंगा कि धीरे-धीरे उस संपत्ति को क्यों नहीं देख सकता।
ग्रेट धन्यवाद! अब सब कुछ बनाता है। प्रयुक्त 'project.evaluationDependsOn()' संपत्ति। मुझे लगता है कि समाधान गंदा है, लेकिन मुझे थोड़ी देर के लिए इसके साथ रहना होगा। –