之前学习一直都是在用maven,工作后因为公司使用的构建工具为gradle,所以学了个gradle的简单使用,学习完后,做个记录。
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
以上是维基百科上对gradle的解释,通过阅读各路大牛的文章后,以下是我对gradle的理解:
gradle能够像maven一样,写入坐标就能引入依赖,而且能够利用脚本满足自己需要的构建逻辑,构建、打包这些基本功能就不必多说了,引用网上的一段话:gradle就是又能干maven的活,又能干ant的活,用groove语言写脚本,表达能力还更强。
gradle是项目管理构建工具,同样,maven,ant也是项目管理构建工具,要问为什么要使用gradle,我们更应该知道为什么要用项目管理构建工具。可以从以下几个方面解释:
在还没有出现gradle这些个项目管理工具的时代,项目的打包引入依赖是个痛苦的过程,如果某个项目需要引入的依赖包有需要改动的地方,那么这个依赖包需要重新修改代码,更新版本,再次打包,项目重新引入该依赖,整个过程相当繁琐,而且需要再次修改时又是一份重复工作,而管理工具的出现就是为了减少这些重复过程,往往项目的开发是讲究代码复用的,某些个模块可能需要引用相同的jar包,比如:我们比较熟悉的spring,我们要想使用spring的功能,避免不了要引入第三方的日志包,也就是说spring不是集成第三方的日志包的,这就避免了代码的重复使用,而工具的出现就是统一管理这些依赖包,尽可能消除代码复用。
依赖管理就比较好理解了,我们在软件开发过程中,往往需要引入第三方依赖进行开发,gradle就很好的帮你管理这些jar包,你只需要写好坐标、仓库,剩下的下载,添加到classpath等都不需要再去操心了。通过这种方式来维护依赖的好处有以下几点:
直接用命令行操作的我不太了解,在idea中的使用非常方便,构建、打包都是一键的事,项目部署在idea中也是非常方便和简单,如果你是用idea的程序猿,相信这种事情能轻松搞定。相比较我之前学过的maven,使用起来差不多,感觉gradle还是比较简洁一点的。
这里的gradle使用只是在idea开发工具中的简单操作。
首先你需要在windows环境下idea中配置好gradle。注:现在网上各种技术框架软件的安装教程一抓一大把,为了避免重复造轮子,软件啥的安装步骤我都一律不贴上去。个人觉得软件的安装对于开发人员来说是属于基础操作。只要前期熬过了一些坑,其他的软件安装都是差不多的操作,大同小异,是不存在技术难度的。
下面重点说一下我在项目中用到的两个gradle主要配置文件:
build.gradle是Gradle默认的构建脚本文件,执行Gradle命令的时候,会默认加载当前目录下的build.gradle脚本文件。
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
//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"
}
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‘
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
options.compilerArgs << ‘-parameters‘
options.fork = true
options.encoding = "UTF-8"
options.forkOptions.executable = ‘javac‘
}
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‘)
}
Task方法
dependsOn 添加依赖
doFirst/doLast 定义动作 (任务可以看做一个动作列表)
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‘
原文:https://www.cnblogs.com/apangne/p/13329902.html