ग्रैडल सबप्रोजेक्ट कार्यों को उठाया नहीं जा रहा है
 Aug 17 2020
निम्नलिखित संरचना के साथ जावा प्रोजेक्ट के लिए मेरे पास एक मल्टी-मॉड्यूल सेटअप है।
mainApp
|--> core-module
|       |--> src
|       |--> build.gradle
|       |--> gradle.properties
|       
|--> lib-module
|       |--> src
|       |--> build.gradle
|       |--> gradle.properties
|--> lib-another-module
|       |--> src
|       |--> build.gradle
|       |--> gradle.properties
|--> settings.gradle
|--> build.gradle
 
    में mainApp/build.gradleमैंने उल्लेख किया है
subprojects {
    test.dependsOn "CreateMessageKeys"
    //test.dependsOn ":CreateMessageKeys"
    //test.dependsOn ("CreateMessageKeys")
    //test.dependsOn (":CreateMessageKeys") none of this working....
}
task CreateMessageKeys(type: CreateMessageKeysTask) {
    destDir = "bundle-common/src/";
    outputClass = "common.messages.MessageKeys";
}
 
    और मेरे core-module/build.gradleपास एक परीक्षण लक्ष्य है
test {
    useTestNG() { 
        useDefaultListeners = true
        suites 'test/testng.xml' 
    }
}
 
    लेकिन नीचे के रूप में त्रुटि हो रही है .. मैं यहाँ क्या याद आ रही है?
Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.dependsOn() is applicable for argument types: (String) values: [CreateMessageKeys]
Possible solutions: respondsTo(java.lang.String)
 
    संपादित करें
subprojects {
    test.dependsOn(rootProject.tasks['CreateMessageKeys'])
}
task CreateMessageKeys(type: CreateMessageKeysTask) {
    destDir = "bundle-common/src/";
    outputClass = "common.messages.MessageKeys";
}
 
    यह त्रुटि उत्पन्न करता है:
* What went wrong:
A problem occurred evaluating root project 'myApp'.
> Task with name 'CreateMessageKeys' not found in root project 'mainApp'.
जवाब
1  JensV Aug 17 2020 at 18:57
कार्य परिभाषा सही नहीं लगती है, कार्यों को परिभाषित करते हुए देखें ।
इसे ऐसा दिखना चाहिए:
task ('CreateMessageKeys', type: CreateMessageKeysTask) {
    destDir = "bundle-common/src/";
    outputClass = "common.messages.MessageKeys";
}
 
     या
task (CreateMessageKeys, type: CreateMessageKeysTask) {
    destDir = "bundle-common/src/";
    outputClass = "common.messages.MessageKeys";
}
 
     इस सवाल पर अप्रासंगिक:
आपके दूसरे उदाहरण में, CreateMessageKeysइस मूल्यांकन के बाद शायद यह कार्य अभी तक मौजूद नहीं है। एक संभावित समाधान निम्नलिखित होगा:
subprojects.each {
    it.afterEvaluate {
         it.test.dependsOn(...)
    }
}
 
     या बस इस ब्लॉक के ऊपर टास्क डेफिनिशन डालने से यह हल हो सकता है।