Gradle入门

Gradle是一款构建工具,它是一种基于Groovy语言的内部DSL构建脚本。

有关DSL的详细说明参见领域特定语言

Gradle Build简介

Gradle有两个基本概念:projects(项目)和tasks(任务)。

Gradle projects

Gradle中的一个项目可以是一个jar文件,或是部署到生产环境中的应用程程序,一项目包含一个或多个task。

Gradle task

task代表gradle构建时执行的最小工作单元。

那么,这些概念与Gradle build有何关系呢。通常每个Gradle build都会包含一个或多个项目。

Gradle配置文件

build.gradle(Gradle构建脚本)

指定项目及其任务。每个Gradle项目都有一个build.gradle文件。gradle命令会在当前路径中查找build.gradle。在此文件中,自定义要运行的任务,定义项目依赖项等等。

gradle.properties(Gradle属性文件)

用于配置构建的属性。虽然可以通过GRADLE_OPTS或JAVA_OPTS配置环境,但通过gradle.properties对项目进行版本化,整个团队使用一致的环境,这种方式会更方便简单。

settings.gradle(Gradle配置文件)

如果一个构建只有一个项目,Gradle配置文件(settings.gradle)是可选的。如果Gradle构建多个项目,这个配置文件是必需的,因为它描述了哪些项目参与了构建。在多项目构建中,必须在项目层级结构的根项目中包配置文件。

构建脚本文件

创建一个build.gradle文件并在其中定义一个任务:

--yml-*

task hello { 
    println "hello,Gradle!"
}

task hello,使用task关键字定义了一个名为hello的任务。每个任务都必须命名,以便Gradle可以调用它。

println "Hello, Baeldung", 代码块。也可以使用其他语言。如:Groovy和Kotlin。

如果要检查Gradle提供的任务,运行:

gradle tasks 

Gradle build和依赖管理

构建项目需要一组配置和任务,用于告诉Gradle在哪里找到源代码进行编译、测试,以及如何在项目中添加依赖项等等。对于一些常规的任务,可以借助Gradle插件完成。

Java Plugin

Java Plugin预定义的配置项和任务,能够帮助轻松构建Java项目。它使用类似Maven的source sets来查找源代码。

Source-set告诉插件在哪里可以找到源代码。默认情况下,Java源代码位于:src/main/java。因此,在build.gradle文件通过一个简单的apply plugin指令,将java插件应用到项目中:

apply plugin: 'java'

现在,可以使用插件为我们构建java项目。

gradle build

依赖关系管理

Gradle提供了一些定义依赖项的方法。在定义之前,首先,要告诉Gradle从何处获取依赖项。为此,需要配置仓库,可以使用maven中央仓库:

repositories{ 
    mavenCentral() 
} 

告诉Gradle所需的外部依赖,假设项目需要一个外部依赖,如:Spring框架。可以在依赖块中声明它,如下所示:

dependencies{ 
    compile 'org.springframework:spring-context:4.3.5.RELEASE'
} 

声明外部依赖的格式

GAV格式(标准Maven格式):

group:artifactId:version

也可使用以下格式:

dependencies{ 
    compile group:'org.springframework', name:'spring-context', version:'4.3.5.RELEASE'
}

发布Artifacts

可以使用依赖关系配置将文件发布到仓库。这些文件称为Artifacts。

在将Artifacts发布到某个仓库之前,首先需要根据上面看到的GAV格式定义一些信息。

group='com.xieyonghui.cs'
version='1.0.0'

发布到仓库

发布Artifacts需要做两件事。首先,使用Maven插件。其次,配置仓库位置。build.gradle文件配置如下所示:

group='com.xieyonghui.cs' 
version='1.0.0' 

apply plugin: 'java' 

apply plugin: 'maven' 

uploadArchives { 
    repositories { 
        mavenDeployer { 
            repository(url: 'http://yourmavenrepo/repository') {   
                authentication(userName: 'user', password: 'password'); } 
        } 
    } 
}

UploadArchives中定义仓库地址,以及一些认证信息。配置完成后运行如下命令:

gradle upload