首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分级SubProject任务不会被拾取

分级SubProject任务不会被拾取
EN

Stack Overflow用户
提问于 2020-08-17 11:42:50
回答 1查看 406关注 0票数 2

我有一个具有以下结构的Java项目的多模块设置。

代码语言:javascript
复制
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中我提到过

代码语言:javascript
复制
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有一个测试目标

代码语言:javascript
复制
test {
    useTestNG() { 
        useDefaultListeners = true
        suites 'test/testng.xml' 
    }
}

但错误如下..。我在这里错过了什么?

代码语言:javascript
复制
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)

编辑

代码语言:javascript
复制
subprojects {
    test.dependsOn(rootProject.tasks['CreateMessageKeys'])
}

task CreateMessageKeys(type: CreateMessageKeysTask) {
    destDir = "bundle-common/src/";
    outputClass = "common.messages.MessageKeys";
}

它生成错误:

代码语言:javascript
复制
* What went wrong:
A problem occurred evaluating root project 'myApp'.
> Task with name 'CreateMessageKeys' not found in root project 'mainApp'.
EN

回答 1

Stack Overflow用户

发布于 2020-08-17 11:57:31

任务定义看起来不正确,请参见定义任务

它应该是这样的:

代码语言:javascript
复制
task ('CreateMessageKeys', type: CreateMessageKeysTask) {
    destDir = "bundle-common/src/";
    outputClass = "common.messages.MessageKeys";
}

代码语言:javascript
复制
task (CreateMessageKeys, type: CreateMessageKeysTask) {
    destDir = "bundle-common/src/";
    outputClass = "common.messages.MessageKeys";
}

与这个问题无关:

在您的第二个示例中,在计算任务CreateMessageKeys时,可能还不存在该任务。一个可能的解决办法是:

代码语言:javascript
复制
subprojects.each {
    it.afterEvaluate {
         it.test.dependsOn(...)
    }
}

或者简单地将任务定义放在这个块之上就可以解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63450111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档