快速了解Gradle并使用Gradle构建web项目
摘要:在javaweb的开发历程中,构建工具一直是开发项目时都会用到的工具,它能够帮我们快速安全的构建一个完整的生命周期框架,合理的管理资源,极大程度简化和标准化项目建设过程。构建工具从最初的Ant开始再到Maven和如今热门的Gradle,经过这么多年的更新迭代,Ant的使用已经是使用非常的少了,市场上目前以Maven为主流构建工具,不过技术一直在进步,劳动力也一直在得到解放,近年Gradle社区化不断完善和版本更新,越来越多开发者和企业开始逐渐使用Gradle来构建项目了,但是这不代表谁就会替代谁,就博主学习的这段时间来看,Maven相比Ant是革命性的,Gradle相比Maven是在其基础上做了优化与简化,要基本掌握学会利用Gradle构建项目不是太难,只需根据博文内容一步步来就可以利用gradle构建一个自己的web项目。
Ant、Maven、Gradle演变:
Ant、Maven、Gradle都是非常成功的构建管理工具,在市场上也取得了非凡的成就,Ant是2000年发布的第一个版本,发布后在开发人员网络接受插件和依赖管理的能力得到提升,但是其使用XML作为一种脚本,XML是分层的,非常不利于程序的编程并当XML文件变大后就会难以管理。
2004年推出Maven,其相较于Ant做出了很大的改进,虽任使用XML作为脚本,但文件结构确有巨大的改变,Ant需要将task所需的全部命令都列出来,而Maven依照约定(convention)并提供现成的可调用的目标(goal),同时期强大的Maven*仓库让其具备从网络上自动下载依赖的能力(后Ant通过lvy也能实现),这一点也就是博主为什么说相较Ant Maven是革命性的原因,但是Maven也面临一些依赖管理的问题,在其同一版本库版本间不能很好的处理其之间的矛盾,复杂的定制构建脚本相比Ant来说更加难写,Maven的优点是其生命周期,而好处的代价是牺牲了灵活性。
2012年Gradle应运而生,结合前者的优点做了改进,是基于Ant和Maven概念的项目自动化建构工具,其抛弃了XML语言的配置采用了基于Groovy的特定领域语言(DSL)来声明项目设置,这里个大家初略的看一下相对于XML的脚本语言和基于DSL声明二者的区别:
从二者的配置来看,Gradle确实简洁明了许多;再来就是Gradle的灵活性,在Maven中相对较复杂的配置,在熟悉groovy语法的情况下Gradle就操作起来相对简单了,在使用前也可以去简单的理解一下groovy语法。
开始使用:环境配置
在使用前我们也需要像配置java环境一样要配置gradle的环境,将环境配置好后就可以开始使用了:
系统配置:
博主的渣渣老人机是windows 10 64bit,java JDK1.7(java JDK必须安装)
安装步骤:
从gradle的官网去下载gradle安装包:https://gradle.org/install/ ,目前版本更新到V4.4.1
下载完成后再本机配置环境变量,配置的方法也是和配置JDK是一样的方法,在pash中配置地址,配置到bin目录就行了。
然后在打开命令提示符,然后键入gradle -v,就可以看到安装的信息了:
了解Gradle构建脚本
Gradle构建脚本文件主要是采用的Groovy这种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大特性,能很好的与java代码结合起来,所以目前Gradle构建项目聚焦于java项目这一块,其主要处理两件事情:一个是项目另一个是任务。
每一个Gradle使用的是Groovy,使其结构更加形象生动,其每个脚本采用的是UTF-8进行编码保存,其命名为build.gradle命名的文件,下面我们来写一个小脚本做一下演示,体验一下Gradle的风采:
task helloword << {
println 'hello word'
}
在到命令提示符运行:这里采用
gradle -q hello的命令来运行,输出结构,以上只是简单的介绍一下,里面其实涉及到的一些任务和依赖管理还有很多东西要处理,这里只是简单的教大家理解熟悉一下,重点是告诉大家如何构建一个Gradle的项目。
构建Gradle项目:
基本构建法:
我想使用过maven的都知道可以用Myeclipse构建也可以使用IDE来构建项目,这里我们构建Gradle项目也是一样的简单,我们可以直接去github上找到Gradle项目,自己通过下载或者是SVN地址在项目中导出到本地就行了,其实还有更加简单的方法,就是直接新建build.gradle文件,在里面使用一下代码就可以了:
apply plugin: 'java'
然后去命令提示符,键入gradle build
这里我们就已经构建成功一个基于gradle的java项目了,但是你去看目录下生成的文件会发现,根本不是我们想要的结构,其实因为单单一句命令只是构建了项目而已,并没有对项目下的文件目录以及依赖的文件进行生成,这时我们还需要在build文件中加入目录结构:
sourceSets {
main {
java {
srcDir 'src'
}
}
test {
java {
srcDir 'test'
}
}
}
结构到是有了,但是一个项目需要的jar包,依赖都没有,这里我们需要指定仓库,这里提供了属性repositories,这里我们可以指定用jcenter仓库,同样我们也可以指定用mavenCentral仓库:
//指定JCenter仓库
repositories {
jcenter()
}
//指定mavenCentral仓库
repositories {
mavenCentral()
}
在指定完仓库就需要导入依赖包了,这里需要用到dependencies来指定依赖:
dependencies {
compile 'org.slf4j:slf4j-api:1.7.12'
testCompile 'junit:junit:4.12'
}
到这里基本就配置搭建好一个java的项目了,但还是有很多常用的配置没有导进来,这里需要去网上找到需要的配置,在导入就可以了,然后把文件导入IDE中开发就可以了。
快速构建法:
讲了半天,配置了那么多东西,对于一个第一次使用gradle的开发人员并不一定能够完美的搭建成功,这不意外,博主我也是搭建了几次,查了许多资料才搭建好的,那有没有什么快捷的方法?其实是有的,一个是可以直接去github上找到,让后通过svn或者下载压缩包的形式直接导入别人已经生成好的项目,这里提供gradle官方的git地址:https://github.com/gradle/gradle。除了这些方法还有一个也是不用敲一个代码就能创建的方法,这是博主在之前学习springboot时候了解到的一种方法,也是我用的最多的方法:就是到springboot的构建网站直接构建 https://start.spring.io/,按要求填入信息在导出项目就行
下载完成后解压我们会得到一个文件夹,里面就是完整的项目结构了:
这里在构建项目的时候首先是执行buildscript构建项目,里面的ext是定义动态属性,这里面有指定了一个springboot的版本,在下面的依赖dependencies会使用版本这个变量,repositories之前有提到,是用来指定仓库,这里指定的是mavenCentral*仓库,这里我们可以自定义自己的*仓库,下面的apply plugin是指定了我们用到的java的插件,指定了eclipse后可以到如eclipse中,sourceCompatibility是指定的喔们用到的JDK的版本,这里指定的是1.8,下面的repositories和上面的是一样的,指定了仓库,只是dependencies依赖有点不同,这里分了好几个生命周期,compile编译时候的依赖,testCompile测试的时候的依赖。
这里我们就完成构建一个gradle的项目了,怎么样是不是很简单,其实博主认为一项新的技术出来我们就要去了解学习,工欲善其事必先利其器,ant和maven必然也有它们自己的优点,就目前来说maven的稳定性肯定是强于gradle的,但是gradle也在一步步完善,构建工具其实也是为了方便开发,至于用什么没工具构建,大家萝卜白菜各有所爱,重点是完成后续的开发。
声明:内容原创,转载指明出处。
推荐阅读