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命令即可,参考下面的环境变量设置:

...
export GRADLE_HOME=/Users/yjmyzz/app/gradle-2.7
...
export PATH="...bin:${GRADLE_HOME}/bin"
...

在终端下,输入gradle -version,如果能显示gradle的版本号,就表示ok了

下面结合intellij idea + gradle 简单记录一下用法(假设大家都有ant, 特别是 maven的使用经验,如果对maven完全不熟悉的朋友,建议先移步阅读一下本博客的maven入门文章

一、idea导入gradle的几个设置要点

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

Gradle 10分钟上手指南的更多相关文章

  1. 10 分钟上手 Vim,常用命令大盘点

    传闻有 180 万的程序员不知道如何退出 Vim 编辑器,真的有这么困难吗?下面给大家整理了一份 Vim 常用命令,让你 10 分钟快速上手 Vim,溜得飞起! 以下命令请在普通模式执行 1.移动光标 ...

  2. 10 分钟上手 Vue 组件 Vue-Draggable

    Vue 综合了 Angualr 和 React 的优点,因其易上手,轻量级,受到了广泛应用.成为了是时下火热的前端框架,吸引着越来越多的前端开发者! 本文将通过一个最简单的拖拽例子带领大家快速上手 V ...

  3. 10分钟上手python pandas

    目录 Environment 开始 对象创建 查看数据 选择 直接选择 按标签选择 按位置选择 布尔索引 设置 缺失数据 操作 统计 应用(apply) 直方图化(Histogramming) 字符串 ...

  4. 干货|给小白的 Nginx 10分钟入门指南

    一个执着于技术的公众号 前言 今天主要对Nginx Web服务软件进行介绍,作为HTTP服务软件的后起之秀,Nginx与它的老大哥Apache相比有很多改进之处,比如,在性能上,Nginx占用的系统资 ...

  5. ECharts数据图表系统? 5分钟上手!

    目录: 前言 简介 方法一:模块化单文件引入(推荐) 方法二:标签式单文件引入 [前言] 最近在捣鼓各种插件各种框架,发现这个ECharts还是比较不错的,文档也挺全的,还是中文的,给大家推荐一下. ...

  6. Rancher 快速上手指南操作(1)

    Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubunt ...

  7. JavaScript 10分钟入门

    JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...

  8. UnityShader快速上手指南(三)

    简介 这一篇还是一些基本的shader操作:裁剪.透明和法向量的应用 (纠结了很久写不写这些,因为代码很简单,主要是些概念上的东西) 先来看下大概的效果图:(从左到右依次是裁剪,透明,加了法向量的透明 ...

  9. Gradle一分钟实现Spring-MVC

    前提: 1,已安装JDK 2, 有Intellij IDEA 3, 已安装Gradle 一分钟实现步骤: 1,mkdir Spring-MVC;cd Spring-MVC2,gradle init3, ...

随机推荐

  1. 像素与rem转换

    // rem尺寸转换函数开始(function (doc, win) {    var docEl = doc.documentElement,        resizeEvt = 'orienta ...

  2. Android Fragment使用(一) 基础篇 温故知新

    Fragment使用的基本知识点总结, 包括Fragment的添加, 参数传递和通信, 生命周期和各种操作. Fragment使用基础 Fragment添加 方法一: 布局里的标签 标识符: tag, ...

  3. android 传感器应用

    本章讲述Android开发中,传感器应用相关的知识点. 1.功能需求 做一个基于传感器的水平尺应用. 2.软件实现

  4. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  5. SQLSERVER2008 R2安装说明

    SQLSERVER2008 R2安装说明一. 安装环境:SQLSERVER2008 R2有32位版本和64位版本,32位版本可以安装在WINDOWS XP及以上操32位和64位的操作系统上,如果服务器 ...

  6. webForm(三)——三级联动

    三级联动 首先附图一张,初步认识一下什么是三级联动:                           注:选第一个后面两个变,选第二个,最后一个改变. 其次,做三级联动需要注意的方面:①DropD ...

  7. [20141124]sql server密码过期,通过SSMS修改策略报错

    背景: 新建了用户,没有取消掉强制密码策略 修改掉策略报错 错误: The CHECK_POLICY and CHECK_EXPIRATION options cannot be turned OFF ...

  8. C#:结构

    1. 简单示例 // 定义结构 public struct Person { public string name; public int age; } class Program { static ...

  9. ActiveMQ 5 入门

    apache-activemq-5.13.2 ActiveMQ使用JAAS授权的配置方式 <plugins> <!– 使用login.config配置授权用户 --> < ...

  10. 烂泥:智能DNS使用与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务现在已经扩展到海外,对外提供的统一接口都是通过域名来解析的,但是海外用户访问国 ...