gradle安装及配置

  • gradle介绍
  • 1. 介绍
  • 2. 常见的项目构建工具
  • gradle安装
  • 1. 下载
  • 2. 配置
  • gradle项目结构
  • build.gradle文件
  • 1. Repositories
  • 2. dependencies
  • 依赖的方式
  • 3. ext 用户自定义属性
  • 4. Subprojects 与 Allprojects
  • gradle构建jar


gradle介绍

1. 介绍

Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的 build 脚本文件。

java gradle 添加 json依赖 gradle jvm_jar


官网地址: https://gradle.org/ 官方下载地址:https://gradle.org/releases/

学习Gradle 的原因:

  1. 目前已经有相当一部分公司在逐渐使用Gradle作为项目构建工具了。
  2. 作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的。

虽然目前常见的项目构建工具有Ant、Maven、Gradle,主流还是Maven,但是未来趋势可能是Gradle。

2. 常见的项目构建工具

Ant: 2000 年 Apache 推出的纯Java 编写构建工具,通过 xml[build.xml]文件管理项目

  • 优点:使用灵活,速度快(快于 gradle 和 maven),
  • 缺点:Ant 没有强加任何编码约定的项目目录结构,开发人员需编写繁杂XML 文件构建指令,对开发人员是一个挑战。

Maven: 2004 年Apache 组织推出的再次使用xml 文件[pom.xml]管理项目的构建工具。

  • 优点: 遵循一套约定大于配置的项目目录结构,使用统一的GAV 坐标进行依赖管理,侧重于包管理。
  • 缺点:项目构建过程僵化,配置文件编写不够灵活、不方便自定义组件,构建速度慢于 gradle。

Gradle: 2012 年Google 推出的基于Groovy 语言的全新项目构建工具,集合了Ant 和 Maven 各自的优势。

  • 优点:集 Ant 脚本的灵活性+Maven 约定大于配置的项目目录优势,支持多种远程仓库和插件,侧重于大项目构建。
  • 缺点:学习成本高、资料少、脚本灵活、版本兼容性差等。

gradle安装

gradle必须先安装JDK如未安装可参考:安装JDK 要求JDK 为 1.8 或者 1.8 版本以上为佳。
查看JDK版本

java -version

1. 下载

官方下载地址:https://gradle.org/releases/

java gradle 添加 json依赖 gradle jvm_gradle_02


解压到指定目录: E:\pgm\gradle-6.9.1

2. 配置

变量名: GRADLE_HOME

变量值: E:\pgm\gradle-6.9.1(实际情况而定)

java gradle 添加 json依赖 gradle jvm_jar_03

在Path变量中新建:

%GRADLE_HOME%\bin

java gradle 添加 json依赖 gradle jvm_Gradle_04


通过

gradle -v

来查看是否配置成功

显示版本号则安装成功

gradle项目结构

java gradle 添加 json依赖 gradle jvm_maven_05

gradlew.bat—>包装器启动脚本
build.gradle—>构建脚本,类似于maven中的pom.xml
settings.gradle—>设置文件,定义项目及子项目名称信息,和项目是一一对应关系

build.gradle文件

java gradle 添加 json依赖 gradle jvm_gradle_06

1. Repositories

repositories {
//gradle中会按着仓库配置的顺序,从上往下依次去对应的仓库中找所需要的jar包:
//如果找到,则停止向下搜索,如果找不到,继续在下面的仓库中查找
//指定去本地某个磁盘目录中查找:使用本地file文件协议:一般不用这种方式
maven { url 'file:///D:/repos/mavenrepos3.5.4'} maven { url "$rootDir/lib/release" }
//指定去maven的本地仓库查找
mavenLocal()
//指定去maven的私服或者第三方镜像仓库查找
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
//指定去maven的远程仓库查找:即 https://repo.maven.apache.org/maven2/
mavenCentral()
//去google仓库查找google()
}

因为 Gradle 没有自己的远程仓库,而是使用 Maven、jcenter、jvy、google 这些远程仓库。

2. dependencies

依赖的方式

Gradle 中的依赖分别为直接依赖,项目依赖,本地jar 依赖。案例如下:

dependencies {
//①.依赖当前项目下的某个模块[子工程]
implementation project(':subject01')
//②.直接依赖本地的某个jar文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//②.配置某文件夹作为依赖项
implementation fileTree(dir: 'libs', include: ['*.jar'])
//③.直接依赖
implementation 'org.apache.logging.log4j:log4j:2.17.2'
}
  1. 直接依赖:在项目中直接导入的依赖,就是直接依赖implementation ‘org.apache.logging.log4j:log4j:2.17.2’ 上面是简写法,完整版写法如下:

implementation group: ‘org.apache.logging.log4j’, name: ‘log4j’, version: ‘2.17.2’
group/name/version 共同定位一个远程仓库,version 最好写一个固定的版本号,以防构建出问题,implementation 类似
maven 中的依赖的scope,对比 maven 中的依赖:

<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
  1. 项目依赖: 从项目的某个模块依赖另一个模块
    implementation project(‘:subject01’)
    这种依赖方式是直接依赖本工程中的libary module,这个 libary module 需要在setting.gradle 中配置。
  2. 本地jar 依赖:本地 jar 文件依赖,一般包含以下两种方式
//直接依赖某文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//配置某文件夹作为依赖项
implementation fileTree(dir: 'libs', include: ['*.jar'])

3. ext 用户自定义属性

Project 和 Task 都允许用户添加额外的自定义属性,要添加额外的属性,通过应用所属对象的ext 属性即可实现。添加之后可以通过 ext 属性对自定义属性读取和设置,如果要同时添加多个自定义属性,可以通过 ext 代码块:

//自定义一个Project的属性
ext.age = 18
//通过代码块同时自定义多个属性
ext {
phone = 19292883833
address="北京"
}
task extCustomProperty {
//在task中自定义属性
ext {
desc = "奥利给"
}
doLast {
println " 年 龄 是 :${age}" println "电话是:${phone}" println "地址是:${address}" println "啊啊:${desc}"
}
}
测试:通过 gradle extCustomProperty
输出结果为:

年龄是:18
电话是:19292883833
地址是:北京啊啊:奥利给

4. Subprojects 与 Allprojects

allprojects 是对所有project(包括Root Project+ child Project[当前工程和所有子工程])的进行统一配置,而subprojects
是对所有Child Project 的进行统一配置。

gradle构建jar

java gradle 添加 json依赖 gradle jvm_jar_07