为什么 Gradle 需要 settings.gradle 文件?

2024-04-23

我要将我的 Android 项目从 Ant 转换为 Gradle。

我的 Eclipse 工作区非常简单:

Workspace
     MyApp
     MyApp-AndroidLibrary

当我在 MyApp 中添加 build.gradle 文件时,我想引用我的 Android 库项目:

apply plugin: 'android'

dependencies {
     compile fileTree(dir: 'libs', include: '*.jar')
     compile project(':MyApp-AndroidLibrary')
}

当我运行 gradle build 时,出现错误“在根项目中找不到路径为 ':MyApp-AndroidLibrary' 的项目”,我用 google 搜索了此内容,发现我需要在工作区中设置一个“settings.gradle”文件目录,添加

include ":MyApp"
include ":MyApp-AndroidLibrary"

这对我来说太糟糕了,为什么 Gradle 需要一个 settings.gradle 文件,为什么不直接提取我在依赖项中定义的项目呢?

还有什么include真正意思?如果我在工作区中有另一个应用程序和其他一些共享库,结构可能如下所示:

Workspace
     App1
     App2
     Library1(Used by App1 & App2)
     Library2(Used only by App1)
     Library3(Used only by App2)

因为只有一个 settings.gradle 文件,所以我必须将它们全部添加到 settings.gradle 中。那味道不太好闻。

是的,我可以重新组织结构,使 Library2 成为 App1 的子目录,使 Library 3 成为 App2 的子目录,但是 Library1 呢?

对此有何评论?


您正在问几个不同的问题。以下是一些提示:

  • ':MyApp-AndroidLibrary' is a logical项目路径,根据中提供的信息映射到物理路径settings.gradle.
  • 多项目构建可以具有任意目录结构,其配置在settings.gradle。除非您愿意,否则无需移动目录。
  • Eclipse 工作区和 Gradle 构建是独立的边界。您可以在同一个工作区中进行多个构建。
  • 当使用从源代码构建的库时,您可以将它们作为同一构建的一部分,或者为它们创建一个单独的构建。在后一种情况下,您需要确保在应用程序之前构建库,并通过 Maven 或 Ivy 存储库交换工件。这可以使用 CI 服务器和企业 Maven/Ivy 存储库来自动化。或者,您可以在计算机上手动触发库的构建并使用本地 Maven/Ivy 存储库。

欲了解更多信息,请查看摇篮用户指南 http://gradle.org/docs/current/userguide/userguide_single.html,特别是关于多项目构建的章节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Gradle 需要 settings.gradle 文件? 的相关文章

随机推荐