zoukankan      html  css  js  c++  java
  • 基于 Groovy 的自动化构建工具 Gradle 入门(转)

    本人工作之初没有使用自动化构建,后来敏捷了,开始使用 Ant - 完全面向过程的定义步骤,不进行依赖管理。再发展到 Maven,面向对象的方式管理工程,有了依赖的管理,JAR 包统一从中央仓库获得,保存在本地库。同时产生了 Ivy + Ant,让 Ant 也能管理依赖,不过 JAR 包依赖仓库也是用 Maven 的。

    前面都是用 XML 来配置的,虽说 XML 的标签描述性也很强,但阅读性还是有些牵强,并且 Maven 和 Ant+Ivy 都需要 IDE 的支持,比如在 Eclipse 中有专门 Maven Dependenciesivy.xml [*] 中列出项目的依赖包,这里常会出现些问题。

    而我今天想尝试使用的是基于 Groovy 的 Gradle,只要一个 build.gradle 文件,实质是一个 groovy 文件,由于可以 DSL,所以 Gradle 比 XML 更写意,更主要的是 Gradle 项目不需要 IDE 的特别支持,见后面的图

    先要安装 Gradle,在我的 Mac 系统下我是用 brew install gradle 安装的,不同平台下可能用 yum, apt-get,安装后执行 gradle 命令验证。

    接着按以下步骤:

    1. 创建项目目录 testgradle,并进入到新创建的目录

    mkdir testgradle
    cd testgradle

    2. 创建 build.gradle 文件,内容:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    apply plugin: 'java'
    apply plugin: 'eclipse'  //apply plugin: 'idea'
      
    repositories {
        mavenCentral()
    }
      
    dependencies {
        compile(
            'ch.qos.logback:logback-classic:1.1.2',
            'com.google.guava:guava:16.0'
        )
        testCompile(
            'junit:junit:4.11'
        )
    }

    这是一个 Groovy 脚本,如果要创建一个 IntelliJ IDEA 项目,上面就用 apply plugin: 'idea',指定 Gradle 使用 Maven 的中央库。然后是依赖库,编译期,测试期的,指定特定版本包的格式也比 Maven 要简洁。

    像 Maven 一样,Gradle 也可配置 providedCompile 和 providedRuntime 类型的依赖,即仅在编译时或运行时用到的依赖。

    3. 创建源文件目录,和 Maven 的目录布局一致

    1
    2
    mkdir -p src/main/{java,resources}
    mkdir -p src/test/{java,resources}

    也可以在 build.gradle 用 sourceSets 定义一个 Task 来准备上面的目录

    4. 生成 Eclipse 项目,执行命令:

    gradle eclipse

    Gradle 命令比较节约屏幕,默认是当前行不停的擦除再显示信息的

    uqiu@8wqn4m1 ~/D/testgradle> gradle eclipse
    :eclipseClasspath
    :eclipseJdt
    :eclipseProject
    :eclipse

    BUILD SUCCESSFUL

    Total time: 4.269 secs

    这样在当前目录下使产生了 Eclipe 项目要求的东西

    .classpath   .gradle      .project     .settings

    如果执行 gradle 时带上  --info 或 --debug 参数将会滚屏显示详细构建过程的信息

    现在把 testgradle 项目导入到 Eclipse 就是下面的情形,Gradle 象 Maven 一样能处理依赖的依赖

    gradle-eclipse-libraries
    从上图看到下载的依赖包在 ~/.gradle/caches 目录中,在 Eclipse 中象普通 Java 项目那样第三方包列在 Referenced Libraries 下,这样不需要第三方 Eclipse 插件便能运行。

    5. 构建

    因为不依赖于 IDE 的支持,所以很容易在 Eclipse/Idea 中进行调试,运行。可以执行 Gradle 的下面 task 来构建,或跑测试

    gradle build
    gradle javadoc
    gradle test


    以下内容仅作参考:

    用 gradle tasks 可列出所有可用的 Task

    gradle_tasks
    Eclipse 需要特定的插件来支持 Maven 和 Ivy 产生的依赖

    maven-libraries ant+ivy-libraries

    再继续看下 Gradle 究竟为何物:

    gradle-version

    从上面我们发现 Gradle 也是在 Any+Ivy 基础上发展而来的。再列下 gradle 的 lib 目录下有什么 JAR 文件,就知道它还用到了哪些包。

    Gradle 官方用户指南

  • 相关阅读:
    提升应用崩溃时的用户体验——去掉烦人的“很抱歉”提示框
    Activity与DialogFragment交互的方法
    取之有道——巧用Root权限 启动其他APP中的Activity
    巧用Handler获取View控件信息
    关于遍历javascript 中的json串浏览器输出的结果不统一的情况
    PHP usort 函数底层排序
    IO多路复用小故事
    不知道写的是啥
    GC算法-增量式垃圾回收
    GC算法-分代垃圾回收
  • 原文地址:https://www.cnblogs.com/softidea/p/4372061.html
Copyright © 2011-2022 走看看