• Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.5——在项目中共享配置


    问题:

    取出多个模块下相同的配置

    解决方案:

    在顶级gradle配置文件里面使用allprojects或者subprojects块

    讨论:

    当你在android studio中新建android项目时,IDE创建了一个两级的gradle项目,一个配置文件在根目录下,一个在叫app的模块目录下。顶级的build.gradle有几个叫allprojects的块:

    这个块是gradle的语法,所以不只是在adroid项目中,在所有基于gradle的项目中都能使用。allprojects属性来源于Gradle项目中的类org.gradle.api.Project的属性。这个属性由当前项目和所有子项目的集合组成。另外有一个也叫这个名字的方法,允许你配置当前项目和所有子项目。

    PS:在gradle API中年经常有一个属性和方法同名。上下问会判断你使用的哪个。

    做法是将闭包参数应用于allprojects集合中的每个项目。也就是说你不需要在子项目(app)中重复repositories块,因为它们已经存在了。

    一个可以替代的方式是使用subprojects块。举例说,如果你有多个android库项目,每个都会在build文件应用库插件。如果每个子项目都是类库项目,你通过在上级配置中应用这个插件的方式,去掉重复的配置,如:

    subprojects返回一个子项目的集合,并且有个叫subprojects的方法对他们使用闭包。

    进一步思考:

    如果查看allprojects方法的文档你会发现,这个方法使用一个叫org.gradle.api.Action的类做参数。签名如下:

    文档说这个方法对当前项目和所有子项目执行给定的Action。Action<T>是一个只有一个参数的叫做execute的简单方法。这好像暗示你要创建一个实现Action接口的类,实例化它,并且将结构作为参数。在1.8以前的java,这经常用作匿名内部类。

    在Groovy中,你可以简单的使用闭包作为参数来实现单方法的接口。闭包会成为方法实现。Gradle对allprojects和subprojects方法的实现,是将闭包参数应用于每个项目。

  • 相关阅读:
    Vimium -为键盘而生
    Sublime Text 3 修改配色主题【侧边框之...】
    MyBatis-Plus文档地址
    解决:电脑新建文件后需要刷新才显示
    技术书籍博客
    js获取浏览器当前窗口的高度长度
    DataGridView隐藏列用CSS实现
    判断windows操作系统平台
    iis7.5错误 配置错误
    vmware安装mac
  • 原文地址:https://www.cnblogs.com/tootwo2/p/6372112.html
Copyright © 2020-2023  润新知