• gradle 又一项目构建工具


    gradle太好用了

    一、寻找gradle的历程

    一开始的时候,我们只有一个工程,所有要用到的jar包都放到工程目录下面,时间长了,工程越来越大,使用到的jar包也越来越多,难以理解jar之间的依赖关系。再后来我们把旧的工程拆分到不同的工程里,靠ide来管理工程之间的依赖关系,各工程下的jar包依赖是杂乱的。一段时间后,我们发现用ide来管理项程很不方便,比如不方便脱离ide自动构建,于是我们写自己的ant脚本。再后来,维护ant脚本变得痛苦,管理jar包更加痛苦。svn能管理源码的版本,却不能管理构建出的部署部件的版本。于是我们决定用maven,然而pom.xml的配置实在太繁了!最后,我找到了神器,gradle!

    二、为什么是gradle?

    1. groovy 比 xml好用

    Gradle用groovy来做为build脚本,比xml要易读易用得多。用过ant的人都知道,要在ant里面表达一个if分支功能有多么的麻烦,不直观。由于gradle的build脚本就是groovy程序,所以做分支循环等非常方便自然。

    2. Convention over Configuration 比写大量ant基础脚本方便

    用ant的时候,要得定义哪里放源码,哪里放jar包,哪里放编译出的class文件等等,每个项目都要这样做,非常麻烦。gradle和maven一样,都定义了一个默认的目录结构,只要按要这个默认的规则来做,就不需要多写一行代码。而且gradle的目录的结构规范和maven是一样的。

    3. 支付定义task,比maven灵活

    maven可以帮助管理依赖关系,但是要在maven里实现一个简单的自定义功能,就很麻烦,要得写maven插件,而在gradle里,task是一等公民,可以轻易的添加自己的功能。

    4. 灵活的依赖管理

    ant没有依赖管理的功能,都要自己手动做,maven的依赖管理很死板,只能依赖于标准的maven artifact,不能依赖本地的某个jar文件或者其它的源码。而gradle则可以混合地同时支持这些依赖方法,这样可以让旧项目的迁移容易得多。

    5. 默认就具有丰富的功能

    只要安装好gradle,默认就支持java项目,war项目,ear项目,做单元测试,生成jar包,上传jar包到maven服务器,等等功能。一般的项目都已经够用了。

    三、简单举例

    安装完gradle之后,在一个目录里时建一个叫build.gradle的文件,一个工程就配好了。要支持生成jar包的jar工程,只要在build.gradle里面添加一行:

    1
    apply plugin: 'java'

    现在在这个目录的命令行里运行gradle jar就可以自动完成把/src/main/java下的java文件编译,自动单元测试/src/test/java下的类,自动生成jar的功能了,太方便了。

    让它依赖于spring,也很简单:

    1
    2
    3
    4
    apply plugin: 'java'
    dependencies {
        compile 'org.springframework:spring-context:3.0.4.RELEASE'
    }

    gradle便会自动地到maven服务器下载spring-context-3.0.4.RELEASE.jar,以及它所依赖的jar包。

    还可以直接依赖本地jar包,如:

    1
    2
    3
    4
    apply plugin: 'java'
    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
    }

    这样就可以直接依赖/libs/目录下所有的jar文件了。

    再比如自定义一个task:

    1
    2
    3
    4
    5
    6
    apply plugin: 'java'
    task myTask << {
        if (System.properties['love']) {
            println "I love you! Gradle!"
        }
    }

    在命令行执行gradle myTask就会运行这个myTask任务了。

    更多功能,要得看http://www.gradle.org 上的官方手册。

    此文转载自:http://sulong.me/2011/01/26/greate_gradle

  • 相关阅读:
    事件对象
    事件方法on()
    each()遍历
    链接式操作
    理解选取更新范围
    net3.5 无网络环境安装
    visual studio 2017 报错 无法下载安装文件。请检查Internet连接,然后重试
    删除数据恢复数据语句 Oracle
    sqlserver还原数据库(mdf与ldf文件如何还原到SQLserver数据库)
    sqlserver2012卸载
  • 原文地址:https://www.cnblogs.com/tonycody/p/2700483.html
Copyright © 2020-2023  润新知