首页 > 其他 > 详细

Gradle入门

时间:2020-07-17 20:02:27      阅读:47      评论:0      收藏:0      [点我收藏+]

写在前面

之前学习一直都是在用maven,工作后因为公司使用的构建工具为gradle,所以学了个gradle的简单使用,学习完后,做个记录。

gradle简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。

以上是维基百科上对gradle的解释,通过阅读各路大牛的文章后,以下是我对gradle的理解:

gradle能够像maven一样,写入坐标就能引入依赖,而且能够利用脚本满足自己需要的构建逻辑,构建、打包这些基本功能就不必多说了,引用网上的一段话:gradle就是又能干maven的活,又能干ant的活,用groove语言写脚本,表达能力还更强。

为什么使用gradle?

gradle是项目管理构建工具,同样,maven,ant也是项目管理构建工具,要问为什么要使用gradle,我们更应该知道为什么要用项目管理构建工具。可以从以下几个方面解释:

差异管理:

在还没有出现gradle这些个项目管理工具的时代,项目的打包引入依赖是个痛苦的过程,如果某个项目需要引入的依赖包有需要改动的地方,那么这个依赖包需要重新修改代码,更新版本,再次打包,项目重新引入该依赖,整个过程相当繁琐,而且需要再次修改时又是一份重复工作,而管理工具的出现就是为了减少这些重复过程,往往项目的开发是讲究代码复用的,某些个模块可能需要引用相同的jar包,比如:我们比较熟悉的spring,我们要想使用spring的功能,避免不了要引入第三方的日志包,也就是说spring不是集成第三方的日志包的,这就避免了代码的重复使用,而工具的出现就是统一管理这些依赖包,尽可能消除代码复用。

依赖管理:

依赖管理就比较好理解了,我们在软件开发过程中,往往需要引入第三方依赖进行开发,gradle就很好的帮你管理这些jar包,你只需要写好坐标、仓库,剩下的下载,添加到classpath等都不需要再去操心了。通过这种方式来维护依赖的好处有以下几点:

  1. 依赖不会进入到你的版本控制仓库中(默认会缓存到~/.gradle/下)
  2. 方便卸载装载依赖(只是一条坐标依赖,不需要删除即可)
  3. 方便版本管理
  4. 不同工程的相同依赖不会存在重复副本(只在~/.gradle下存在一份)
项目打包部署:

直接用命令行操作的我不太了解,在idea中的使用非常方便,构建、打包都是一键的事,项目部署在idea中也是非常方便和简单,如果你是用idea的程序猿,相信这种事情能轻松搞定。相比较我之前学过的maven,使用起来差不多,感觉gradle还是比较简洁一点的。

gradle使用

这里的gradle使用只是在idea开发工具中的简单操作。
首先你需要在windows环境下idea中配置好gradle。注:现在网上各种技术框架软件的安装教程一抓一大把,为了避免重复造轮子,软件啥的安装步骤我都一律不贴上去。个人觉得软件的安装对于开发人员来说是属于基础操作。只要前期熬过了一些坑,其他的软件安装都是差不多的操作,大同小异,是不存在技术难度的。
下面重点说一下我在项目中用到的两个gradle主要配置文件:

build.gradle

build.gradle是Gradle默认的构建脚本文件,执行Gradle命令的时候,会默认加载当前目录下的build.gradle脚本文件。

  1. gradle可以设置多种类型的仓库,这里只举Maven repositories,引用第三方库的配置
repositories {
    maven {
        url "http://repo.mycompany.com/maven2"
    }
}
  1. 依赖配置:
//dependencies是project一个方法,闭包作为参数
dependencies {
    //2中依赖添加方式
    testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.12‘
    //依赖冲突, logback依赖slf4j 1.7.25, log4依赖1.6.0 时 gradle会自动依赖最新版本
    compile "ch.qos.logback:logback-classic:1.2.3"
}
  1. gradle也可以用下面的方式(2.1版本以上)声明使用的插件:
plugins {
    id ‘com.example.plugin‘, version ‘1.0‘
    id ‘java‘  //java插件
    id ‘maven‘ //maven插件 
}

plugins{}块这种方式引入的插件来自Gradle官方插件库;如果使用“buildscript {}”块指定第三方库作为Gradle插件的话,指定插件就需要使用“apply plugin”了。
4. group和version是项目信息:

//group version为project的方法
//项目名称name在settings.gradle中
group ‘com.demo‘
version ‘1.0-SNAPSHOT‘
  1. 编译时参数:
compileJava {
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    options.compilerArgs << ‘-parameters‘
    options.fork = true
    options.encoding = "UTF-8"
    options.forkOptions.executable = ‘javac‘
}
  1. 自定义打包脚本:
jar {
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    manifest {
        attributes ‘Main-Class‘: ‘dev.test.demo.Application‘
    }
    exclude(‘application.properties‘, ‘license.txt‘, ‘notice.txt‘, ‘readme.txt‘, ‘changelog.txt‘)
}
  1. 任务/Task
Task方法
    dependsOn        添加依赖
    doFirst/doLast   定义动作  (任务可以看做一个动作列表)
settings.gradle

settings.gradle是模块配置文件,大多数setting.gradle的作用是为了配置子工程,根目录下的settings.gradle脚本文件是针对module的全局配置,它的作用域所包含的所有module是通过settings.gradle来配置。
settings.gradle用于创建多Project的Gradle项目。Project在IDEA里对应Module模块。
例如配置module名rootProject.name = ‘TestDemo‘
多项目构成:allProjects = root项目+各子项目

pluginManagement {
	repositories {
		gradlePluginPortal()
	}
}
rootProject.name = ‘TestDemo‘

生命周期

  1. 初始化: 根据 build.gradle生成project
  2. 配置: 生成task的依赖顺序和执行顺序 注意划分配置代码和执行代码
  3. 执行: 执行task的动作代码

博文仅供参考,如有错误,欢迎指正

Gradle入门

原文:https://www.cnblogs.com/apangne/p/13329902.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!