android - Gradle添加依赖项抛出方法dependencies.add

标签 android groovy gradle

我的计划是编写更少的样板代码,并且我计划做一个方法来添加依赖项,这是我的方法

project.ext{
    forEachWithKNp1 = { String[] items, Closure op ->
        final int length = items.length / 2;
        for(int index = 0; index < length; index++){
            op(items[index], items[index + 1]);
        }
    }

    addSquareUpArtifacts = { String... names ->
        forEachWithKNp1(names, { name, version ->
            project.dependencies {
                getDependencies().add("compile", "com.squareup.$name:$name:$version")
            }
        })
    }
}

当我尝试同步项目时,发生错误Error:(32, 0) A problem occurred evaluating project ':my-project'.
我究竟做错了什么? (我是groovy和gradle的noobie,我试图在gradle文档中查找并搜索扔Github,没有发现有用的东西)

最佳答案

我做了一些研究,所以我理解了问题所在,在addSquareUpArtifacts方法中,我使用的是作为根项目的project变量,相反,我应该使用指定项目来添加依赖项

这是最终的解决方案

project.ext{
    forEachWithKNp1 = { String[] items, Closure op ->
        final int length = items.length / 2;
        for(int index = 0; index < length; index++){
            op(items[index], items[index + 1]);
        }
    }

    addSquareUpArtifact = {String projectPath, String... names ->
        final Project target = project.project(projectPath)

        forEachWithKNp1(names, { name, version ->
            target.getDependencies().add('compile', "com.squareup.$name:$name:$version")
        })
    }
}

关于android - Gradle添加依赖项抛出方法dependencies.add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520094/

相关文章:

android - Jetpack Compose : Mimicking spinner. DropDownMenu 内的 setSelection()

grails - 在groovy中动态执行代码

删除文件扩展名的常规方法?

testing - SOAP UI - 在测试套件中所有测试用例的所有测试步骤请求中设置节点值

maven - Gradle 项目包括一个 Maven 项目作为子项目

android - Facebook 应用程序链接仅在由 Mobile Hosting API 生成时有效

android - 设置android :menuCategory attribute have?有什么作用

Android Spongy CaSTLe Gradle 依赖项

android - 在 Android 的自定义启动器中创建应用程序快捷方式

android - Xerces + Gradle = preDexDebug 错误