【问题标题】:Difference between Settings gradle, property gradle and build gradleSettings gradle、property gradle 和 build gradle 的区别
【发布时间】:2020-09-01 23:48:04
【问题描述】:

我是 java 新手,我正在经历这个 article on medium

这里作者写了这样的东西来解释项目文件

settings.gradle 文件包含您的模块和项目的列表 姓名。请记住,一个 Android 项目可以包含一个或 几个模块,每个模块都可以包含自己的功能或逻辑。 gradle.properties 文件定义您的设置并配置构建 环境。 gradle、gradlew 和 gradlew.bat 文件与 Gradle 包装器,因此我们不必手动安装 Gradle。 build.gradle 是一个顶级构建文件。这里我们可以添加配置 所有模块共享的选项。例如,你可以给你的文件 访问核心 Android 功能的存储库。

我无法理解。所以我用谷歌搜索并偶然发现了这个惊人的SOF answer

设置分级

对于 settings.gradle 我能够理解

  • 项目中只有一个设置gradle文件
  • 它包含所有包含的子模块

但我没听懂他说的意思

标记模块树的根目录,

还有

子模块查找可以自定义

构建 gradle

在主模块的 build.gradle 文件中,您可以使用 allprojects {} 或 subprojects {} 来定义所有其他模块的设置。

这不是 settings.gradle 的用途吗?为所有包含的子模块定义设置

有人可以回答我上面的问题吗?另外,Android 中的 gradle.properties 应该或多或少像环境文件一样使用?

【问题讨论】:

  • 不是对您问题的直接回答,但 Gradle 有一个广泛的 User Manual 可能有助于理解。

标签: java android android-studio gradle


【解决方案1】:

标记模块树的根目录

包含settings.gradle 的文件夹将被视为您项目的根目录。所有模块都包含在此目录中。

子模块查找可以自定义

我真的不知道这件事。我在settings.gradle 中看到的唯一两件事是includecustom dependency resolution rules(显然你也可以把buildscript {} 放在那里)。

也许这意味着使用include 您可以指定任何要标记为模块的目录?例如,您可以使用:app:features:feature1app/features/feature1 目录声明为模块。

如果你有兴趣,settings.gradle 上有一个 documentation page

在主模块的 build.gradle 文件中,您可以使用 allprojects {} 或 subprojects {} 来定义所有其他模块的设置。

这不是 settings.gradle 的用途吗?为所有包含的子模块定义设置

allprojectssubprojets 只是对重复代码进行分组的一种方式。例如,您几乎在每个模块中都声明了依赖项,以及要从存储库中解析的依赖项。所以在根项目的build.gradle中,我们通常有:

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        // etc...
    }
}

如果您愿意,您可以为每个模块构建脚本放置一个存储库块,效果是一样的。

为什么这不在settings.gradle 中?我认为是因为settings.gradle 更多的是配置项目结构而不是项目本身。此外,由于首先执行settings.gradle,因此尚未定义模块,因此无法真正配置它们。

Android 中的 gradle.properties 应该或多或少像环境文件一样使用

差不多。人们有时会在那里声明依赖版本,因此它们不会在每个模块中重复。这些属性将随处可用,甚至来自settings.gradle

希望对您有所帮助。我希望我有更多的答案,这本来是一个评论,但有点长。

【讨论】:

    猜你喜欢
    • 2021-02-21
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2017-03-05
    • 2017-11-24
    相关资源
    最近更新 更多