每个 Gradle 项目都有一个 build.gradle 构建脚本配置,每个 build.gradle 都是 org.gradle.api.Project
接口的一个实例,脚本中所有的操作都在 Project 实例的作用域。
init.gradle 配置
gradle 也和其它构建工具一样,存在全局配置,它默认在 ~/.gradle/init.gradle 路径文件,主要用来配置一些全局属性。
示例如下:
allprojects {
apply plugin: 'maven'
repositories {
mavenLocal()
}
uploadArchives {
repositories {
mavenDeployer {
snapshotRepository(url: 'http://maven.xxx.com/repository/maven-snapshots/') {
authentication(userName: 'xxxx', password: 'xxxxx')
}
repository(url: 'http://maven.xxx.com/repository/maven-releases/') {
authentication(userName: 'xxxx', password: 'xxxxx')
}
}
}
}
}
关于更多信息,可查看 init.gradle 文件配置详解。
build.gradle 配置
项目信息
项目信息指项目的坐标
// group:代表组织和整个项目的唯一标志,等同于 Maven 的 groupId
// version:用于说明目前项目的版本
// 项目名称 name 在 settings.gradle 中
group 'com.example.demo'
version '1.0-SNAPSHOT'
插件配置
Gradle 项目的插件配置通过 apply
关键字来配置,它是 Project 的一个方法。
apply plugin: 'java'
apply plugin: 'war'
jdk 版本
Gradle 中的 Java 版本属性有两个,一个是 sourceCompatibility
和 targetCompatibility
。
简单的说,sourceCompatibility
属性跟编译环境有关,而 targetCompatibility
属性跟运行环境有关。
至少有这么几个原则,是不能违背的:
sourceCompatibility
关系到你使用到的Java
语法特性及库sourceCompatibility
不能比targetCompatibility
大targetCompatibility
不能比目标客户端运行环境的JavaVersion
大targetCompatibility
不能比当前Gradle
使用的JavaVersion
大
sourceCompatibility = 1.8
targetCompatibility = 1.8
仓库配置
Gradle 支持从 Maven 仓库和 JCenter 上获取构件。
// 仓库配置
// jcenter JCenter远程仓库
// mavenLocal Maven 本地仓库
// maven 私服,可配置多个
// mavenCentral Maven 中央仓库
repositories {
jcenter()
mavenLocal()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
mavenCentral()
}
Maven 从中央仓库 mavenCentral()
下载依赖包,但是在国内下载速度巨慢,所以一般我们配置国内的镜像。仓库按照配置顺序依次取。
jcenter 是由 JFrog 公司提供的 Bintray 中的 Java 仓库。它是当前世界上最大的 Java 和 Android 开源软件构件仓库。所有内容都通过内容分发网络(CDN)使用加密 https 连接获取。JCenter 是 Goovy Grape 内的默认仓库,Gradle 内建支持(jcenter()仓库),非常易于在(可能除了 Maven 之外的)其他构建工具内进行配置。 JCenter 相比 Maven Center 构件更多,性能也更好。但还是有些构件仅存在 Maven Center 中。
初始化配置
Gradle 中初始化配置可以用 configurations
代码块。
// 排除 slf4j-log4j12 依赖
configurations {
compile.exclude module: 'slf4j-log4j12'
}
依赖配置
Gradle 中依赖配置用 dependencies
关键字,它是 project 的一个方法,闭包作为参数。
dependencies {
// 导入本地的依赖包
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.projectlombok', name: 'lombok', version: '1.18.6'
// 也可以用这种写法
compile('org.apache.commons:commons-lang3:3.3.2')
}