本文所用的概念和定义参考自http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html以及http://blog.jobbole.com/71999/
在Gradle中,有两个基本概念:项目和任务。请看以下详解:
项目是指我们的构建产物(比如Jar包)或实施产物(将应用程序部署到生产环境)。一个项目包含一个或多个任务。
任务是指不可分的最小工作单元,执行构建工作(比如编译项目或执行测试)。
那么,这些概念和Gradle的构建又有什么联系呢?每一次Gradle的构建都包含一个或多个项目。
下面这张图展示了上面所谈到的这些概念的关系。
我们能够使用以下配置文件对Gradle的构建进行配置:
Gradle构建脚本(build.gradle)指定了一个项目和它的任务。
Gradle属性文件(gradle.properties)用来配置构建属性。
Gradle设置文件(gradle.settings)对于只有一个项目的构建而言是可选的,如果我们的构建中包含多于一个项目,那么它就是必须的,因为它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。
在android项目中,gradle扮演着重要的角色。android studio使用gradle来构建项目的。比如几个基本的gradle语法,就能打包项目,比如最简单的android build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
android {
compileSdkVersion 17
}
官方解释:
buildscript{}:Configures the build script classpath for this project. 就是设置脚本的运行环境
repositories{}:Returns a handler to create repositories which are used for retrieving dependencies and uploading artifacts produced by the project. 大意就是支持java 依赖库管理(maven/ivy),用于项目的依赖。
dependencies{}:The dependency handler of this project. The returned dependency handler instance can be used for adding new dependencies. For accessing already declared dependencies, the configurations can be used. 依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件,如果前面定义了repositories{}maven 库,使用maven的依赖(我没接触过ivy。。)的时候只需要按照用类似于com.android.tools.build:gradle:0.4,gradle 就会自动的往远程库下载相应的依赖。
apply plugin:声明构建的项目类型,这里当然是android了
android{}:设置编译android项目的参数,接下来,我们的构建android项目的所有配置都在这里完成。
好了,这里提供一段自写的代码:
task runTask(type: run, group: 'Coverage reports') {
group = '自行定义的group'
description = 'Generates an aggregate report from all subprojects'
def projects = new ArrayList()
subprojects.each { prj ->
if (!contains(prj.name)) {
projects.add(prj)
}
}
dependsOn(projects.jacocoReport)
additionalSourceDirs = generateSourceFiles(projects)
sourceDirectories = generateSourceFiles(projects)
classDirectories = generateClassDirs(projects)
executionData = files(projects.run.executionData)
reports {
html {
enabled true
destination '写入你想要的储存项目reports的路径'
}
xml {
enabled true
destination '写入你想要的储存项目reports的路径'
}
}
doFirst {
executionData = files(executionData.findAll { it.exists() })
}
}
android studio下terminal运行gradle:
gradle clean runTask
就可以实现以上代码的目的:把生成的文件放到android项目下的你想要的储存项目reports的路径