ग्रैडल सबप्रोजेक्ट कार्यों को उठाया नहीं जा रहा है
निम्नलिखित संरचना के साथ जावा प्रोजेक्ट के लिए मेरे पास एक मल्टी-मॉड्यूल सेटअप है।
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
कार्य परिभाषा सही नहीं लगती है, कार्यों को परिभाषित करते हुए देखें ।
इसे ऐसा दिखना चाहिए:
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(...)
}
}
या बस इस ब्लॉक के ऊपर टास्क डेफिनिशन डालने से यह हल हो सकता है।