为什么要用gradle

以前开发android或者java,直接只使用本地文本,以及编译工具就可以了。
但是随着需求越来越多,越来越变态(eg:依据手机壳改变主题颜色)
,许多代码可以封装成一个库,或者框架了。然后分享的人越来越多。
需要添加第三方库,开始是直接放入一个目录中,比如lib,然后配置编译路径时,把库文件路径配置好,然后用编译打包工具生成最终产物。

再到后来发现,每次都要手动去调用编译很麻烦,于是一个叫ant构建工具和maven项目管理出现了。

ant:

它把你想做的事情自动化,不用你手动一步一步做,因为里面内置了javac、java、创建目录、复制文件等功能,所以可以直接点击Ant文件,即可编译生成你的项目。而且还能跨平台。

maven:

Maven除了具备Ant的功能外,还增加了以下主要的功能:
使用Project Object Model来对软件项目管理;
内置了更多的隐式规则,使得构建文件更加简单;
内置依赖管理和Repository来实现依赖的管理和统一存储;
内置了软件构建的生命周期;

区别:

Maven 拥有约定,只要遵守约定,它就知道你的源代码在哪里。
Maven 是声明式的。
你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。
Maven 会帮你处理其它的事情。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。
这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。缺点是运行许多默认目标。

ant没有约定,项目生命周期,它是命令式的。
所有操作都要手动去创建、布置。
甚至连build.xml文件都需要手动创建。

比如ant使用的自定义task:
build.xml

<taskdef name="MyCopy" classname="org.tools.SimpleTask" classpath="bin"></taskdef>  
<target name="mycopy">  
    <MyCopy file="2.txt" tofile="output.txt"/>  
</target>  

maven的项目管理:

<groupId>com.dodonew</groupId>
<artifactId>springmvc</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>springmvc</name>
<url>http://maven.apache.org</url>

<dependencies>
    <!-- spring日志依赖 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.21</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.7</version>
    </dependency>
</dependencies>

终上所诉发现,需要xml编写配置,深涩难懂,而且还要记住规范。那么有没有简单一点的呢,于是gradle出现了。
我们来看一下引入依赖库:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation files('libs/libammsdk.jar')
    testImplementation "junit:junit:4.12"
}

简单明了,管理起来也很方便。
而且也持支自定义任务。

Gradle 是以 Groovy 语言为基础,面向Java应用为主,基于DSL语法的自动化构建工具。
比Ant和Maven强大的多。

使用易懂的DSL语法 ,将开发过程中需要的编译、构建、测试、打包以及部署工作,变得非常简单、而且方便重复使用。而且,最重要的是,在Gradle中,你可以根据需要定义自己的model,不像maven中xml已经限制了你所用的model。
特点:

1.依赖管理 :

代码量更少,阅读方便。

2.Task任务:

和Ant类似,Gradle也使用task作为最小的运行单元。
ant中task的定义

<?xml version=”1.0″?>
<project name=”foo”>
<target name=”hello”>
   <echo>Hello World</echo>
</target>
</project>

gradle写法:

task hello << {
   println “Hello World”
}

仅仅一行的“Hello World"而言,二者看起来差不多。不过试想一下,Ant是使用定义好的task来做要做的事情,而Gradle则是使用Groovy动态脚本来实现,只要你熟悉Groovy,就可以在构建脚本中做任何想做的事情。

3. 灵活性

对于Ant或者Maven,一般使用XML或者插件来定义构建,由于XML本身的缺陷(复杂,不易阅读,只能描述数据而不是流程),在复杂的项目中,维护XML的配置简直就是噩梦。相反,Gradle的构建是使用groovy脚本语言来定义,因此可以灵活的在构建中使用Groovy的代码,而不仅仅是受限与XML的单一模型。

task time << {
int hours = new Date().hours
switch (hours) {
case 0..11:
println ” Good Morning! It’s ${hours}am.”
break
case 12..17: // noon to 5pm
println ” Good Afternoon! It’s ${hours > 12 ? hours – 12 : hours}pm.”
break
default: // 6pm to 11pm
println “Good Evening! It’s ${hours – 12}pm. Shouldn’t you be going home?”
}
}

4.扩展性

依赖Groovy的动态性,Gralde能够写出基于DSL的代码,对于复杂的项目而言,很容易维护。

另外,Gradle也支持插件机制,目前已经有很多Gradle的可用插件,像Java, War, Jetty等,使用起来非常方便。

5.社区支持

Gradle的发展离不开社区的支持。目前,很多著名的开源组件,像Hibernate,Spring等都开始使用Gradle作为自动化构建工具。
这篇文章阐述了Hibernate的作者为什么放弃maven,而转投Gradle:

另外,Gradle的官方网站也提供了非常详细的文档和例子,很容易入门 。

整体而言,Gradle的优势已经越来越明显。如果是新起的项目,不要犹豫,直接上Gradle吧,绝对有不一样的体验。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容