一、介绍

java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说:

1. ant 功能虽然也很强大,但是过于灵活,规范性不足,对目录结构及build.xml没有默认约定 ,10个程序员做同样的项目,可能最终出来的10个项目,目录结构和build.xml都不相同,而且没有统一的依赖项管理。

2. maven的出现,解决了规范的问题,也顺带解决了依赖项统一管理的问题,但是规范性又太强了,基本上可以认为是一种强规范,用久了之后,感觉灵活性显略不足,而且pom.xml采用xml结构,项目大了,xml就有些冗长。

3. gradle则是综合了ant与maven的优点,吸收了ant中task的思想,然后把maven的目录规范及仓库思想也融合进来了,但是允许用户自由修改默认的规范(比如:源代码目录可以自己指定),另外配置文件采用groovy语言来书写(格式初看上去有点类似json,比较精减),注意:groovy是一门真正的【可编程】语言,而不是象css、html之类的标记性「符号」,所以从这个意义上讲,配置文件build.gradle本身就是一份源代码,这份源代码,最终交由gradle来处理执行,完成代码的构建工作。

gradle的发展速度之快,是ant 与 maven所不能比拟的,看下gradle官网的文档就能感受到了,一个新兴的工具文档如此之齐全,可见大家对它的认可程度。

二、安装:

安装十分简单,到官司下载最新版(是一个压缩包),解压某个目录,然后在环境变量里添加GRADLE_HOME, 再把该变量添加到path路径中,保证能找到gradle命令即可,参考下面的环境变量设置:

1.windows环境

设置系统环境变量

GRADLE_HOME
D:\Work\04_Plug-in unit\gradle-2.10

PATH中增加

%GRADLE_HOME%\bin;

注意:如果是win10系统,无需配置GRADLE_HOME,因为path中不识别变量,直接在PATH中用全路径

D:\Work\04_Plug-in unit\gradle-2.10\bin

2.Linux系统

export GRADLE_HOME=/opt/module/gradle-2.10
export PATH="...bin:${GRADLE_HOME}/bin"

验证:

gradle -version
或
gradle -v

三、IDEA中使用

1.idea导入gradle的设置

注意打红圈的地方,一定要勾上Offline work,否则会连到官司下载一堆东西,而墙内的速度,你们懂的,等到天昏地暗,海枯石烂也没有尽头
 
导入成功后,记得看下项目设置,参考上图,Use auto-import 这里记得要勾上,否则可能会遇到以下怪现象:
  终端下gradle build 一切正常,但是在idea里,打开java源代码,看到各种红叉,提示这个类找不到,那个包没有引用。
 
提示:每个idea项目,项目根目录下都对应了一个.iml文件,它记录了该项目使用了哪些第3方的包,所以在IDE环境中,它才能感知到各种第3方的源代码,写代码时弹出各种智能下拉提示,有兴趣的话,建议大家看下这个文件的内容,肯定会有收获 。
 
2.gradle基本用法
基本上,gradle是通过各种plugin来完成相关功能的,这点是从maven学来的,所以基本上学习gradle,就是掌握一些常见plugin的用法及关键配置。
(1)创建项目
随便建一个空目录,然后cd 进入该目录,再gradle init 就可以了
(2)示例项目
我在github及coding.net上创建一个hello-gradle的项目,可以快速帮助大家快速掌握各种常规用法
(3)常用命令

#查看所有可用的task
gradle task

#编译(编译过程中会进行单元测试)
gradle build

#单元测试
gradle test

#编译时跳过单元测试
gradle build -x test

#直接运行项目
gradle run

#清空所有编译、打包生成的文件(即:清空build目录)
gradle clean

#生成mybatis的model、mapper、xml映射文件,注: 生成前,先修改src/main/resources/generatorConfig.xml 文件中的相关参数 , 比如:mysql连接串,目标文件的生成路径等等
gradle mybatisGenerate

#生成可运行的jar包,生成的文件在build/install/hello-gradle下,其中子目录bin下为启动脚本, 子目录lib为生成的jar包
gradle installApp

#打包源代码,打包后的源代码,在build/libs目录下
gradle sourcesJar

#安装到本机maven仓库,此命令跟maven install的效果一样
gradle install

#生成pom.xml文件,将会在build根目录下生成pom.xml文件,把它复制项目根目录下,即可将gradle方便转成maven项目
gradle createPom
 

【入门】Gradle的基本使用、在IDEA中的配置、常用命令的更多相关文章

  1. Linux 下 expect 脚本语言中交互处理常用命令

    Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...

  2. 【视频开发】Gstreamer中一些gst-launch常用命令

    GStreamer是著名的开源多媒体框架,功能强大,其命令行程序 gst-launch 可以实现很多常规测试.播放等,作为系统调试等是非常方便的. 1.摄像头测试 gst-launch v4l2src ...

  3. [转帖]「日常小记」linux中强大且常用命令:find、grep

    「日常小记」linux中强大且常用命令:find.grep https://zhuanlan.zhihu.com/p/74379265 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍 ...

  4. 图解git中的最常用命令

    图解git中的最常用命令 Git命令参考手册(文本版) git init                                                  # 初始化本地git仓库(创 ...

  5. 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总

     PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...

  6. 【日常小记】linux中强大且常用命令:find、grep【转】

    转自:http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍fin ...

  7. Linux 中强大且常用命令:find、grep

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下:    find命令        f ...

  8. 【转载】Linux中强大且常用命令:find、grep

    转载自:http://www.linuxeden.com/html/softuse/20130804/142065.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find. ...

  9. linux中强大且常用命令:find、grep

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们. 本文结构如下: find命令 find命令的一般形 ...

  10. centos和rhel中软件包管理常用命令

    软件包管理的常用命令  rpm软件包的管理  查询类: rpm  -q 软件包的查询: rpm  -q  软件包的名字   //你的记住软件包完整名字 模糊查询:rpm  -qa  |  grep   ...

随机推荐

  1. python-demo实例

    1.turtle库与蟒蛇案例 import turtle def drawSnake(rad,angle,len,neckrad): for i in range(len): turtle.circl ...

  2. 元素位置pageX,pageY,clientX,clientY,scrollX,scrollY,screenX,screenY,offsetX,offsetY

    总结: event.clientX 设置或获取鼠标指针位置相对于当前窗口的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. (可见区域)event.clientY 设置或获取鼠标指针位置相对于当 ...

  3. E. Kefa and Watch hash 线段树

    2015-09-28 14:11:36 by opas 这题给的是一个字符串 把其中一些子串给取出来 判断是否是周期为d的字符串  还需要把 其中的一个区间完全变成一个数 ,然后在查询,我们把每个字符 ...

  4. WebConfig类

    package com.ssm.yjblogs.config; import java.util.ArrayList; import java.util.List; import java.util. ...

  5. Java WEB 笔记

    1. 部署并启动 tomcat 服务器 1). 解压 apache-tomcat-version 到一个非中文目录下 2). 配置一个环境变量,JAVA_HOME(指向 JDK 安装目录)或 JRE_ ...

  6. USB接口案例——多态和转型

    其中,为传递和使用的匿名对象,即创建了对象,但是没有引用类和对象名来接收: 电脑类中的操作usb的成员方法中,要向下转型,毛主席讲的具体问题具体分析,不同的设备有不同的操作:

  7. PIVOT(透视转换)和UNPIVOT(逆透视转换)

    一.原数据状态 二.手动写透视转换1 三.手动写透视转换2 四.PIVOT(透视转换)和UNPIVOT(逆透视转换)详细使用 使用标准SQL进行透视转换和逆视转换 --行列转换 create tabl ...

  8. bzoj2287 [POJ Challenge]消失之物

    题目链接 少打个else 调半天QAQ 重点在47行,比较妙 #include<algorithm> #include<iostream> #include<cstdli ...

  9. [转载]localStorage使用总结

    一.什么是localStorage.sessionStorage 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题 ...

  10. python中的logger模块

    logger 提供了应用程序可以直接使用的接口handler将(logger创建的)日志记录发送到合适的目的输出filter提供了细度设备来决定输出哪条日志记录formatter决定日志记录的最终输出 ...