构建块
Gradle构建中的两个基本概念是项目(project)和任务(task),每个构建至少包含一个项目,项目中包含一个或多个任务;在多项目构建中,一个项目可以依赖于其他项目;类似的,任务可以形成一个依赖关系图来确保他们的执行顺序.
项目(project)
1.一个项目代表一个正在构建的组件(比如一个jar文件),当构建启动后,Gradle会基于build.gradle实例化一个org.gradle.api.Project类,并且能够通过project变量使其隐式可用.
2.group、name、version
3.apply、dependencies、repositories、task
4.属性的其他配置方式:ext、gradle.properties
任务(task)
1.任务对应org.gradle.api.Task,主要包括任务动作和任务依赖,任务动作定义了一个最小的工作单元,可以定义依赖于其他任务、动作序列和执行条件
2.dependsOn(声明任务依赖)
3.doFirst在动作前面、doLast(<<)在动作后面
4.自定义任务,如下:
def createDir = { path -> File dir = new File(path); if(!dir.exists()){ dir.mkdirs(); } } task makeJavaDir(){ def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resources']; doFirst { paths.forEach(createDir); } } task makeWebDir(){ dependsOn 'makeJavaDir' def paths = ['src/main/webapp','src/test/webapp']; doLast { paths.forEach(createDir); } }
构建声明周期
1.初始化
2.配置
3.执行
依赖管理
1.概述:几乎所有的基于JVM的软件项目都需要依赖外部类库来重用现有的功能.自动化的依赖管理可以明确依赖的版本,可以解决因传递性依赖带来的版本冲突
2.工件坐标:group、name、version
3.常用仓库:mavenLocal/mavenCentral/jcenter,自定义仓库,文件仓库
4.依赖的传递性:B依赖A,如果C依赖B,那么C依赖A
5.自动化依赖管理
6.依赖阶段配置:compile(编译时),runtime(运行时)
7.依赖阶段关系