apply plugin 使用插件
group 包名
version 项目版本
sourceCompatibility 指定编译.java文件的jdk版本
targetCompatibility 确保.class文件与targetCompatibility所指定版本或者更新版本的java虚拟机兼容
dependencies 依赖
即项目构建或运行所需要的一些文件。
compile 编译阶段需要依赖项
testCompile 测试时编译阶段需要依赖项
。。。
respositorits 仓库
Gradle是在仓库里找寻所需的外部依赖,即存储依赖的地方。
仓库按group,name和version为规则存储的一些文件。可以支持不同的仓库存储格式,如Maven和Ivy,并且还提供多种与仓库进行通信的方式,如通过本地文件系统或 HTTP。
默认情况下,Gradle 没有定义任何仓库,在使用外部依赖之前需至少定义一个仓库,例如Maven中央仓库。
buildscript
gradle本身需要的资源,
因此经常能看到buildscript中有与外部相同的配置,例如:
repositories { maven { url "http://uk.maven.org/maven2/" } }
configurations(依赖配置/依赖分组)
在Gradle中,依赖都被会分配到某一个具体的configuration中(这里我不倾向于翻译成配置,我觉得布局,或者分组更适合),即依赖配置/依赖分组。
Configuration代表着一个或多个构件及构件所需依赖的一个分组。
Java插件已经预定义了一些configuration,比如,compile,runtime,testCompile,testRuntime等。备注:apply plugin: 'java'
compile
放在这个configuration下的依赖是在编译产品代码时所使用的,但它作为一个分组,包含产品代码和编译所需的依赖。
runtime
产品代码在运行时需要的依赖,默认,也会包含compile中的依赖。
testCompile
编译测试代码时所需要的依赖,默认,被编译的产品代码和产品代码需要的编译依赖也属于该分组。
testRuntime
运行测试时需要的依赖。默认,包含compile,runtime和testCompile的分组的构建和依赖。
为什么需要分组?
依赖之所以要分组,是因为,每个阶段对依赖的需要不一样,最明显的是产品代码和测试代码,比如junit在产品代码中就不需要。
为什么需要自定义配置?
一般编译阶段需要的依赖,在运行阶段也需要,但是反过来就不一定了,
一个常见的例子,做web开发时需要servlet的依赖,但是只是编译阶段,运行时servlet依赖由servlet容器来提供。
所以Gradle的War插件也提供了两个configuration,分别是providedCompile和providedRuntime,它们对依赖的使用范围定义和compile以及runtime一致,只不过依赖的Jar包不会被加到War包里面。