Android Gradle 插件Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 : https://google.github.io/android-gradle-dsl/2.3/





一、settings.gradle 映射为 Settings 类



根目录下的 settings.gradle 脚本 , 编译时被映射为 Settings 类 ;

settings 中可以直接调用 Settings 接口中的方法 , 查看 include 方法 , 发现该 include 方法定义在 Settings 接口中 ;

@HasInternalProtocol
public interface Settings extends PluginAware, ExtensionAware 
    /**
     * <p>设置文件的默认名称。</p>
     */
    String DEFAULT_SETTINGS_FILE = "settings.gradle";
    
    /**
     * <p>将给定的项目添加到生成中。
     * 提供的列表中的每个路径都被视为要添加到生成中的项目的路径。
     * 请注意,这些路径不是文件路径,而是指定新项目在项目层次结构中的位置。
     * 因此,提供的路径必须使用“:”字符作为分隔符(而不是“/”)。</p>
     *
     * <p>提供的路径的最后一个元素用作项目名称。
     * 提供的路径将转换为相对于根项目目录的项目目录。
     * 包含项目后,可以通过更改“projectDir”属性来更改项目目录 (see @link ProjectDescriptor#setProjectDir(File))</p>
     *
     * <p>例如,路径@code a:b添加了一个带有路径@code:a:b、名称@code b和项目目录@code$rootDir/a/b的项目。
     * 它还添加了路径为@code:a、名称为@code a、项目目录为@code$rootDir/a的项目,如果它还不存在的话。</p>
     *
     * <p>使用项目路径的一些常见示例如下:</p>
     *
     * <pre class='autoTestedSettings'>
     *   // 包括两个项目,“foo”和“foo:bar”
     *   // 通过将“:”替换为“/”来推断目录
     *   include 'foo:bar'
     *
     *   // 包括一个项目,其项目目录与逻辑项目路径不匹配
     *   include 'baz'
     *   project(':baz').projectDir = file('foo/baz')
     *
     *   // 包括许多其项目目录与逻辑项目路径不匹配的项目
     *   file('subprojects').eachDir  dir -&gt;
     *     include dir.name
     *     project(":$dir.name").projectDir = dir
     *   
     * </pre>
     *
     * @param projectPaths 要添加的项目。
     */
    void include(String... projectPaths);





二、build.gradle 映射为 Project 类



Module 模块下的 build.gradle 会被映射为 Project 类 , 因此在 build.gradle 中可以直接调用 Project 中的方法 ;

查看 build.gradle 中的 dependencies 方法源码 , 该方法定义在 Project.java 中 ;

@HasInternalProtocol
public interface Project extends Comparable<Project>, ExtensionAware, PluginAware 
    /**
     * 默认的项目生成文件名。
     */
    String DEFAULT_BUILD_FILE = "build.gradle";

    /**
     * <p>配置此项目的依赖项。
     *
     * <p>此方法对该项目的@link DependencyHandler执行给定的闭包。这个 @link
     * DependencyHandler 作为闭包的委托传递给闭包。
     *
     * <h3>Examples:</h3>
     * See docs for @link DependencyHandler
     *
     * @param configureClosure 用于配置依赖项的闭包。
     */
    void dependencies(Closure configureClosure);

以上是关于Android Gradle 插件Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )

Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )

Android Gradle插件与Gradle的区别