Gradle 教程

Gradle 笔记

Gradle 构建配置详解


每个 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 属性跟运行环境有关。

至少有这么几个原则,是不能违背的:

  1. sourceCompatibility 关系到你使用到的 Java 语法特性及库
  2. sourceCompatibility 不能比 targetCompatibility 大
  3. targetCompatibility 不能比目标客户端运行环境的 JavaVersion 大
  4. 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')
}