我有一个具有以下结构的 Java 项目的多模块设置。
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'.
最佳答案
任务定义看起来不正确,见 defining tasks .
它应该如下所示:
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(...)
}
}
或者简单地将任务定义放在这个 block 之上可以解决这个问题。
关于java - Gradle SubProject 任务没有被拾取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63450111/