Gradle中不同block间的引用如何传递?作用域问题?

发布于 2022-09-07 12:20:26 字数 1580 浏览 17 评论 0

dependencies {
//..
    if (!is_debug) {
        getModuleNameStartsWith {
            it.startsWith(":module")
        }.each {
            println("implementation  project ===> ${it}")
            implementation project(it)
        }
    }
}


def getModuleNameStartsWith(def start) {
    def settings = new File("${rootDir}/settings.gradle")
    //根据settings内容找到符合条件(start函数)的module
    return names
}

这是我的一个方法,目的是从 settings中找到合适的module然后在app中依赖他们。

我需要在dependenciesblockimplementation project(it),如果把这个implementation放到getModuleNameStartsWith函数中就不行了


Could not find method implementation() for arguments [project ':module1'] on project ':app' of type org.gradle.api.Project. Open File

会提示Could not find method,即使我在dependencies block中将this传入getModuleNameStartsWith.也不行。所以我应该怎么做?可以让我在函数中调用implementation()方法。

因为我想让我的函数改成这样。

//原函数
if (!is_debug) {
        getModuleNameStartsWith {
            it.startsWith(":module")
        }.each {
            println("implementation  project ===> ${it}")
            implementation project(it)
        }
    }
        dependModules(is_debug){
            it.startsWith(":module")
        }
        //...
        def getModuleNameStartsWith(def isDebug, def start)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文