自定义项目
标准 Gradle 构建文件名是 build.gradle。 在具有许多子项目的多项目构建中,您可能希望在命名构建文件时更具表现力。 当您使用 IDE 时,并行编辑多个 build.gradle 文件并在它们之间不断切换很容易变得混乱。 本节将解释如何配置您的项目以使用自定义构建文件名。
假设您要构建以下项目结构:每个子项目目录名称均由前缀 todo- 和项目的名称构成。 例如,子项目存储库的目录将命名为 todo-repository。 然而,构建文件名只能由实际的项目职责来表示。 以下目录树显示了您想要完成的最终结果:
.
├── build.gradle
├── settings.gradle
├── todo-model
│ ├── model.gradle // 自定义构建脚本名称
│ └── src
│ └── ...
├── todo-repository
│ ├── repository.gradle
│ └── src
│ └── ...
└── todo-web
├── src
│ └── ...
└── web.gradle
使这个项目结构再次发挥作用的关键在于设置文件。 它提供的功能不仅仅是告诉您的构建应该包含哪些子项目。 事实上,它本身就是一个构建脚本,在构建生命周期的评估阶段执行。 借助第 6.2.2 节中概述的设置 API,您可以直接访问根项目及其子项目。 以下清单显示了如何迭代所有子项目以分配自定义构建文件名。 此外,您还可以为根项目设置自定义名称。
// 通过路径包含子项目
include 'todo-model', 'todo-repository', 'todo-web'
// 设置根项目名称
rootProject.name = 'todo'
// 迭代可通过根项目访问的所有子项目
rootProject.children.each {
// 通过使用子项目的名称、附加文件扩展名 .gradle 并删除前缀 todo 为子项目设置自定义构建文件名
it.buildFileName = it.name + '.gradle' - 'todo-'
}
尽管此示例可能不适用于您的实际项目,但根据您的喜好配置多项目构建的可能性是无限的。 在大多数情况下,无需付出太多努力就可以实现。 请记住,Settings API 是您最好的朋友。
总结
模块化项目可以提高系统的质量属性,即可重用性、可维护性和关注点分离。 有两条准则可以让您的软件轻松实现这一目标:最小化耦合和最大化内聚。
在本章中,您将待办事项应用程序代码库拆分为模块。 您创建了一个包含模型类的模块,一个处理数据持久性的模块,以及一个公开 Web 应用程序功能的模块。
Gradle 将每个模块视为一个单独的项目。 每个项目都可以声明对其他项目的依赖关系。 Gradle 的工具箱为建模和执行分层或平面项目结构的多项目构建提供了广泛的支持。 您了解到,在构建生命周期的初始化阶段执行的设置文件确定哪些项目应成为构建的一部分。
项目 API 提供了声明项目特定构建代码的方法。 它还允许配置常见或特定于子项目的构建行为。 您了解到,当前项目层次结构中的项目之间的依赖关系是使用与外部依赖关系相同的依赖关系机制来声明的。
多项目构建代码的组织非常灵活。 您可以选择使用单个主构建脚本、每个项目的单独构建脚本或混合方法。 您采取的路线取决于您的项目的要求。 但是,将构建逻辑组织到单独的脚本中可以提高代码的可维护性,添加到构建中的子项目越多。
设置文件中提供的设置 API 可用于适应非常规的多项目布局。 该示例演示了使用偏离标准命名约定的自定义构建脚本名称是多么容易。
下一章将全面介绍 Gradle 的测试支持。 我们将探索如何使用不同的测试框架来编写单元、集成和功能测试。 我们还将讨论如何为您自己的构建脚本编写测试代码。