我有一个具有以下结构的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'.发布于 2020-08-17 11:57:31
任务定义看起来不正确,请参见定义任务。
它应该是这样的:
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(...)
}
}或者简单地将任务定义放在这个块之上就可以解决这个问题。
https://stackoverflow.com/questions/63450111
复制相似问题