Gradle快速入门

简介: Gradle快速入门

1 前言

Gradle于2012年发布,带来了一些更高效的特点。 Gradle是一个基于ApacheAnt和ApacheMaven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。

1.1 gradle特性

看到这里,你应该对gradle有了基本的了解, 也可以将其用于你的项目之中。但是如果你Maven已经非常熟悉了,可能不太愿意使用gradle,因为貌似没有必要。但是既然gradle出现了,就说明有很多人对Maven还是有一定的意见。因此在这里我来总结一下gradle相比maven的优势。

  1. 速度,gradle使用构建缓存、守护进程等方式提高编译速度。结果就是gradle的编译速度要远超maven,平均编译速度比Maven快好几倍,而且项目越大,这个差距就越明显。

20210405183208244.png

灵活性,gradle要比Maven灵活太多,虽然有时候灵活并不是一件好事情。但是大部分情况下,灵活一点可以极大的方便我们。Maven死板的XML文件方式做起事情来非常麻烦。很多Maven项目都通过执行外部脚本的方式来完成一些需要灵活性的工作。而在gradle中配置文件就是构建脚本,构建脚本就是编程语言(groovy编程语言),完全可以自给自足,无需外部脚本。

  1. 简洁性,完成同样的功能,gradle脚本的长度要远远短于maven配置文件的长度。虽然很多人都说XML维护起来不麻烦,但是我觉得,维护一个光是依赖就有几百行的XML文件,不见得就比gradle脚本简单。

也许是因为我上面说的原因,也许有其他原因,不得不承认的一件事情就是gradle作为一个新兴的工具已经有了广泛的应用。spring等项目已经从Maven切换到了gradle。开发安卓程序也只支持gradle了。因此不管是否现在需要将项目从maven切换到gradle,但是至少学习gradle是一件必要的事情。

2 Gradle安装配置

https://gradle.org

2021030814592055.png

20210308145941359.png

20210308145853882.png

GRADLE_HOME D:\gradle-6.8

20210308150020571.png

%GRADLE_HOME%\bin

20210308150053685.png

之后运行环境变量之后查看版本,注意所需的jdk,推荐8以上.

20210308150140910.png

ec4f18e3f18e484dac5e7e2e9c42a8b5.png

3 Gradle构建脚本

3.1 构建项目

20210308150547129.png

2021030815090382.png

4 项目启动

2021030816285317.png

5 gradle中,dependency和plugin的区别

dependency引入的东西

作用:代码编译/运行时所需要的东西

打包:项目打包后这些东西基本都在(一般都在)。

例如:JSON工具包GSON(com.google.code.gson),不仅开发时要用,项目运行时也要用,就需要打包进项目中;

20210309100659556.png

plugin引入的东西

作用:插件,作为开发/编译/打包时的一种辅助工具

打包:一般不会打包进项目中。

例如:使用 maven-source-plugin 插件将API包的源码一起打包,方便发布至Maven仓库,而这个插件不会在打包后的项目中出现。

20210309100640249.png

maven中的样子

20210309150439168.png

gradle中的样子

20210309150526490.png

6 各种依赖方式说明

202103091702384.png

2021030917023834.png

implementation

这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。

api

完全等同于compile指令。

compile

这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。

api或compile关键字引用的包对于其他module来说是可见的,而implementation关键字引用的包对于其他module来说是不可见的。

7 maven和gradle相互转换

7.1 gradle TO maven

在build.gradle中增加以下内容(group,version可自行修改,artifactId默认为目录名称)

plugins {
    id 'java'
}
apply plugin: 'maven'
group 'com.lyh'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
    mavenLocal()
    mavenCentral()
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.15'
}

在Gradle项目根目录下执行 gradle install,我们会发现根目录的build文件夹下生成了一个poms文件夹里面有pom-default.xml文件。把它复制到根目录下,改名成pom.xml即可

603b5b7b0124eada231a59e3f1519ece.png

然后执行mvn compile打包即可

d449c7dc7952dba354389bd10b448efc.png

使用maven的mvn compile编译过程中,出现如下警告:

[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!

解决:在pom.xml文件中配置:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

7.2 maven TO gradle

先保证本机安装了gradle 2.0以上的版本

然后在maven项目的根目录下运行

gradle init --type pom

然后重启idea重新打开项目,右下角会有弹窗提示创建gradle项目,点击创建即可,然后该项目即是maven又是gradle项目了

8 gradle解决控制台中文乱码问题

-Dfile.encoding=UTF-8

20210405194557452.png

9 gradle常见错误

gradle + lombok使用@Slf4j注解log日志编译出错:找不到符号

gradle项目使用lombok的@Slf4j注解输出日志时报了这么个错:

错误: 找不到符号

log.info(“xxxx”);

重装lombok插件,更换lombok版本都没解决,设置Enable annotation processing也不行,

build.gradle里除了引用

org.projectlombok:lombok:1.18.8

之外还需:

annotationProcessor ‘org.projectlombok:lombok:1.18.8’

10 gradle打jar包

20210506131320675.png

20210506131345307.png

11 gradle 怎么 install 本地项目到本地maven仓库,供其他项目使用

在maven项目里面,如果执行maven 的 install 命令,那么这个项目就会被发布到本地的仓库去。

那么gradle项目的话,看下他的侧面的命令没有install命令。这怎么办呢。

首先,需要在gradle项目里面引入maven插件。命令很简单

apply plugin: ‘maven’ // 引入maven插件

引入之后,就会在侧边栏的命令里面看到install命令了

20190802181618659.png

然后,就是设置一下 group 和 version ,然后就可以install了。

20190802181845921.png

可以看到,本地仓库已经给install成功了。

其他模块 引用你刚刚install的jar。

20190802182031944.png

改完builder.gradle文件之后,import changes 一下,就可以跟使用其他公共的依赖一样使用自己创建的依赖。

可以在这个地方查看一下,刚刚引入的自定义jar

20190802182411995.png

这地方是支持直接输入文字搜索的,使用idea久的,估计都知道吧。看我箭头指的地方。

目录
相关文章
|
6月前
|
Oracle Java 关系型数据库
gradle快速入门
gradle快速入门
|
存储 缓存 算法
Gradle快速入门使用指南 - Maven转移到Gradle
Gradle快速入门使用指南 - Maven转移到Gradle
1162 0
Gradle快速入门使用指南 - Maven转移到Gradle
|
Java API 网络架构
Gradle快速入门使用指南 - 初始化应用
Gradle快速入门使用指南 - 初始化应用
884 0
Gradle快速入门使用指南 - 初始化应用
|
Java Unix Shell
Gradle快速入门使用指南 - 安装篇
Gradle快速入门使用指南 - 安装篇
339 0
Gradle快速入门使用指南 - 安装篇
|
Java Android开发 Maven
Gradle2.0用户指南翻译——第九章. Groovy 快速入门
翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2.0 。
1242 0
|
Java 容器 Android开发
Gradle2.0用户指南翻译——第十章. Web 应用程序快速入门
翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2.0 。
1506 0
|
Java API Maven
Gradle2.0用户指南翻译——第七章. Java 快速入门
翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2.0 。
1270 0
|
Java Maven 数据格式
Gradle学习系列之一——Gradle快速入门(转)
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin   请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git     和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。
1141 0
|
Java 测试技术
Gradle 1.12 翻译——第九章 Groovy快速入门
由于时间关系,没办法同时做笔记和翻译,关于Gradle的用户指南,本博客不再做相关笔记,而只对未翻译章节进行翻译并在此发表。 有关其他已翻译的章节请关注Github上的项目:https://github.
1134 0