java - Gradle SubProject 任务没有被拾取

标签 java gradle build.gradle

我有一个具有以下结构的 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/

相关文章:

java - 为什么 exception.getCause() == 异常?

Eclipse 中的 Gradle 未在 Eclipse IDE 中显示外部依赖项源和 java 文档

android - 如何在gradle打包选项中定义使用哪个so文件

android - 同步 build.grandle 时出现 webrtc native API 'vectorDrawable' 和 'Task' 错误

java - hibernate-spatial jpa 距离查询

java - Gradle:任务 ':compile Java' 执行失败

android-studio - Android Studio 项目导入与模块导入

gradle - 如何替换 gradle 的默认源文件夹?

java - 在 XPages Domino Java 中回收 Item 对象

scala - 在 LWJGL 3.1.4 中使用 stackPush() 时遇到问题 - NoSuchMethodError