Gradle项目构建工具介绍

时间:2021-08-22 12:12:45

1、Gradle概述

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的结构化查询语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。它面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。

Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven,Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

Gradle官网:https://gradle.org/

2、Gradle介绍

Gradle是一个基于JVM的构建工具,它提供了:

(1)像Ant一样,通用灵活的构建工具
(2)可以切换的,基于约定的构建框架
(3)强大的多工程构建支持
(4)基于Apache Ivy的强大的依赖管理
(5)支持maven, Ivy仓库
(6)支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件
(7)对Ant的任务做了很好的集成
(8)基于Groovy,build脚本使用Groovy编写
(9)有广泛的领域模型支持构建

3、Gradle优点

(1)依赖型的编程语言
(2)可以结构化构建,易于维护和理解
(3)有高级的API允许你在构建执行的整个过程当中,对它的核心进行监视,或者是配置它的行为
(4)有良好的扩展性,有增量构建功能来克服性能瓶颈问题
(5)多项目构建的支持
(6)多种方式的依赖管理
(7)是第一个构建集成工具,集成了Ant, maven的功能
(8)易于移值
(9)脚本采用Groovy编写,易于维护
(10)*,开源

4、Gradle安装

(1)安装JDK,并配置JAVA_HOME环境变量。因为Gradle是用Groovy编写的,而Groovy基于JAVA。另外,Java版本要高于1.5。
(2)下载。地址是:http://www.gradle.org/downloads。在这里下载你要的版本。
(3)解压。如果你下载的是gradle-xx-all.zip的完整包,它会有以下内容:

引用块内容
二进制文件
用户手册(包括PDF和HTML两种版本)
DSL参考指南
API手册(包括Javadoc和Groovydoc)
样例
源代码,仅供参考使用

(4)配置环境变量。配置GRADLE_HOME到你的gradle根目录当中,然后把%GRADLE_HOME%/bin(linux或mac的是$GRADLE_HOME/bin)加到PATH的环境变量。linux用户可以在~/.bashrc文件中配置。

(5)运行gradle -v,检查一下是否安装无误。如果安装正确,它会打印出Gradle的版本信息,包括它的构建信息,Groovy, Ant, Ivy, 当前JVM和当前系统的版本信息。另外,可以通过GRADLE_OPTS或JAVA_OPTS来配置Gradle运行时的JVM参数。

6、Gradle构建简介

在Gradle中,有两个基本概念:项目和任务。

(1)项目是指我们的构建产物(比如Jar包)或实施产物(将应用程序部署到生产环境)。一个项目包含一个或多个任务。
(2)任务是指不可分的最小工作单元,执行构建工作(比如编译项目或执行测试)。

那么,这些概念和Gradle的构建又有什么联系呢?每一次Gradle的构建都包含一个或多个项目。

下面这张图展示了上面所谈到的这些概念的关系。

Gradle项目构建工具介绍

我们能够使用以下配置文件对Gradle的构建进行配置:

(1)Gradle构建脚本(build.gradle)指定了一个项目和它的任务。
(2)Gradle属性文件(gradle.properties)用来配置构建属性。
(3)Gradle设置文件(gradle.settings)对于只有一个项目的构建而言是可选的,如果我们的构建中包含多于一个项目,那么它就是必须的,因为它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。

7、gradle配置

spring项目建议使用Gradle进行构建项目,相比maven来讲Gradle更简洁,而且Gradle更时候大型复杂项目的构建。Gradle吸收了maven和ant的特点而来,不过目前maven仍然是Java界的主流。一个使用gradle配置的项目,build.gradle配置文件如:

buildscript {
repositories {
maven { url "http://repo.spring.io/libs-snapshot" }
mavenLocal()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE")
}
}

apply plugin: 'java' //添加Java插件, 表明这是一个 Java 项目
apply plugin: 'spring-boot' //添加 Spring-boot支持
apply plugin: 'war' //添加 War 插件, 可以导出 War 包
apply plugin: 'eclipse' //添加Eclipse插件, 添加Eclipse IDE支持, Intellij Idea 为 "idea"

war {
baseName = 'favorites'
version = '0.1.0'
}

sourceCompatibility = 1.7 //最低兼容版本JDK1.7
targetCompatibility = 1.7 //目标兼容版本JDK1.7

repositories { // Maven仓库
mavenLocal() //使用本地仓库
mavenCentral() //使用*仓库
maven { url "http://repo.spring.io/libs-snapshot" } //使用远程仓库
}

dependencies { // 各种依赖的jar包
compile("org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE")
compile("org.springframework.boot:spring-boot-starter-thymeleaf:1.3.5.RELEASE")
compile("org.springframework.boot:spring-boot-starter-data-jpa:1.3.5.RELEASE")
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.5'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.4'
compile("org.springframework.boot:spring-boot-devtools:1.3.5.RELEASE")
compile("org.springframework.boot:spring-boot-starter-test:1.3.5.RELEASE")
compile 'org.webjars.bower:bootstrap:3.3.6'
compile 'org.webjars.bower:jquery:2.2.4'
compile("org.webjars:vue:1.0.24")
compile 'org.webjars.bower:vue-resource:0.7.0'

}

bootRun {
addResources = true
}