Background
通过IDEA创建一个Gradle Java项目,可以得到以下的目录结构:
gradle-project
- gradle
- wrapper
- gradle-wrapper.jar
- gradle-wrapper.properties
- src
- main
- java
- resources
- test
- java
- resources
- build.gradle
- gradlew
- gradlew.bat
- settings.gradle
下面我们将逐步来了解该目录下与gradle相关的各个文件:
Wrapper
Wrapper是gradle推荐的构建方式,它是一个指定了gradle版本的脚本(具体可以查看gradle-wrapper.properties),可以帮助我们减少前期的配置工作,不必像maven一般需要手动去下载并配置环境变量。
其包含的文件如下(以下的文件对于一个通过git进行版本控制的项目来说是需要进行保存的):
gradle/wrapper/gradle-wrapper.jar: 用于下载gradle的jar包。gradle/wrapper/gradle-wrapper.properties: 负责配置 Wrapper 运行时行为的配置文件,包括下载的gradle版本等。gradlew, gradle.bat:用于使用 Wrapper 执行构建的 shell 脚本和 Windows 批处理脚本。
Settings
声明实例化和配置参与构建的Project实例的层次结构所需的配置。一个gradle项目,不管是单模块还是多模块,只能存在一个settings.gradle 文件(置于根目录),当gradle开始构建整个项目前,会通过该配置文件生成一个Settings实例。如果当前的项目没有settings.gradle 文件,gradle会将其当成单模块项目构建。
多模块构建
当创建一个gradle项目时,settings.gradle 会以当前文件所处的目录作为当前项目的根项目,当前目录的名称也会被当成根项目名称,如:
rootProject.name = 'gradle-project'
如果想要在当前项目创建一些子模块的话,可以先创建一个子目录,并在子目录下创建一个build.gradle文件(具体可以参考下方多模块目录结构),再通过Settings.include(java.lang.String[])在settings.gradle中将子项目引入,最终gradle会将该子模块加入构建中,如:
rootProject.name = 'gradle-project'include('gradle-sub-project') // 等同于 include 'gradle-sub-project'
多模块目录结构
gradle-project
- gradle
- wrapper
- gradle-wrapper.jar
- gradle-wrapper.properties
- gradle-sub-project
- src
- main
- java
- resources
- test
- java
- resources
- build.gradle
- build.gradle
- gradlew
- gradlew.bat
- settings.gradle
build.gradle
gradle 构建的脚本,参与构建的模块应该存在其对应的build.gradle 脚本文件。
构建脚本的外部依赖项 buildscript
如果构建脚本时需要外部依赖、插件的辅助,可以通过buildscript 将其引入。
buildscript {repositories {mavenCentral()}dependencies {classpath group: 'commons-codec', name: 'commons-codec', version: '1.2'}}
插件 plugins
gradle只是提供了一个自动化的流程,实际构建中所需要的功能,比如编译Java代码的能力,都是添加插件来达到的。
Gradle核心插件/可直接参与构建的插件(通过buildscript引入的插件)
// plugins {// id «plugin id»// }plugins {id 'java'}
二进制插件(需要被编译解析的插件)
