Gradle 多项目构建怎么配置?

文章导读
Previous Quiz Next Gradle 可以轻松处理最小和最大的项目。小项目只有一个 build 文件和一个源代码树。将项目拆分成更小的、相互依赖的模块非常容易理解和消化。Gradle 完美支持这种多项目构建场景。
📋 目录
  1. A 多项目构建的结构
  2. B 通用构建配置
  3. C 配置和依赖
A A

Gradle - 多项目构建



Previous
Quiz
Next

Gradle 可以轻松处理最小和最大的项目。小项目只有一个 build 文件和一个源代码树。将项目拆分成更小的、相互依赖的模块非常容易理解和消化。Gradle 完美支持这种多项目构建场景。

多项目构建的结构

这类构建形式各式各样,但它们有一些共同特征,如下所示——

  • 项目根目录或主目录中的一个 settings.gradle 文件。

  • 项目根目录或主目录中的一个 build.gradle 文件。

  • 子目录中包含各自的 *.gradle 构建文件(某些多项目构建可能省略子项目的构建脚本)。

要列出构建文件中所有的项目,可以使用以下命令。

C:\> gradle -q projects

输出

你将收到以下输出——

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

如果指定了描述,该报告会显示每个项目的描述。你可以使用以下命令来指定描述。将它粘贴到 build.gradle 文件中。

description = 'The shared API for the application'

通用构建配置

在 root_project 中的 build.gradle 文件中,可以将通用配置应用到所有项目,或者仅应用到子项目。

allprojects {
   group = 'com.example.gradle'
   version = '0.1.0'
}

subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
}

这为所有项目指定了共同的 com.example.gradle group 和 0.1.0 version。subprojects 闭包为所有子项目应用通用配置,但不应用到根项目,而 allprojects 闭包则会应用到根项目。

配置和依赖

核心 uiutil 子项目也可以拥有自己的 build.gradle 文件,如果它们有特定需求,而这些需求未被根项目的通用配置覆盖。

例如,ui 项目通常依赖 core 项目。因此 ui 项目需要自己的 build.gradle 文件来指定此依赖。

dependencies {
   compile project(':core')
   compile 'log4j:log4j:1.2.17'
}

项目依赖使用 project 方法指定。