本人工作之初没有使用自动化构建,后来敏捷了,开始使用 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/caches 目录中,在 Eclipse 中象普通 Java 项目那样第三方包列在 Referenced Libraries 下,这样不需要第三方 Eclipse 插件便能运行。

5. 构建

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

gradle build
gradle javadoc
gradle test


以下内容仅作参考:

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


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

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

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

Gradle 官方用户指南

基于 Groovy 的自动化构建工具 Gradle 入门(转)的更多相关文章

  1. 项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld

    在java应用中,其实做的最多的还是java web应用.所以现在我们做的就是用gradle构建一个简单的web项目,简单点,直接上代码吧. 1.进入目录D:\work\gradle\web,新建文件 ...

  2. 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程

    之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...

  3. 项目自动化建构工具gradle 入门3——生一个exe的helloWorld

    前两次呢,我们能够用一个外部的jar 来实现输出helloWorld.但问题是我每次都要用java -jar 来执行,这样我们自己玩还可以,让用户玩就不好了.所以我们生成一个exe给他们吧.这次我们仍 ...

  4. 项目自动化建构工具gradle 入门2——log4j输出helloWorld

    上一章节呢,有一个能跑的程序了.但是对做工程的人来说,用日志输出感觉比用System.out要有档次一点.比如使用log4j.直接上例子: 1进入D:\work\gradle\log目录  ,您电脑没 ...

  5. 项目自动化建构工具gradle 入门0——环境 & 废话

    gradle 是一个项目自动化构建工具.同类的产品还有ant ,maven等等.相比之下我更喜欢gradle,它语法简洁.兼容maven.ide集成很好. 学习使用gradle最快的方式是看文档,而且 ...

  6. gulp前端自动化构建工具新手入门篇

    很久没有更新博文了. 经过了一次年前吐血的赶项目,终于在年后回血了.趁着有空,新学到了一个前端自动化构建工具-gulp. 现在我们通过这3个问题来学习一下: 1.什么是gulp? 2.为什么要用gul ...

  7. 前端项目自动化构建工具——Webpack入门教程

    参考资料:https://www.webpackjs.com/(中文文档)   https://www.webpackjs.com/(官方文档) 首先有必要说明一下,本文侧重讲解webpack基本配置 ...

  8. 基于流的自动化构建工具------gulp (简单配置)

    项目上线也有一阵子,回头过来看了看从最初的项目配置到开发的过程,总有些感慨,疲软期,正好花点时间,看看最初的配置情况 随着前端的发展,前端工程化慢慢成为业内的主流方式,项目开发的各种构建工具,也出现了 ...

  9. 自动化构建工具gradle安装教程(使用sdkman安装)

    gradle是什么?(wiki解释) Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的 ...

随机推荐

  1. linux进程解析--进程的创建

    通常我们在代码中调用fork()来创建一个进程或者调用pthread_create()来创建一个线程,创建一个进程需要为其分配内存资源,文件资源,时间片资源等,在这里来描述一下linux进程的创建过程 ...

  2. 如何在SAS中重新构建限价指令簿(Limit Order Book):使用HashTable

    在之前的一篇日志里(http://blog.csdn.net/u010501526/article/details/8875446),我将重新构建LOB(Limit Order Book)分为了三步 ...

  3. iOS开发经常使用宏定义

    iOS开发经常使用宏定义 iOS开发中经常须要获取屏幕宽度高度,为view设置颜色,为imgagView设置图片等,我们都可定义一些宏,随时都可拿来使用,方便开发 <span style=&qu ...

  4. Android菜鸟的成长笔记(11)——Android中的事件处理

    原文:[置顶] Android菜鸟的成长笔记(11)——Android中的事件处理 Android提供了两种方式来处理事件,一个是基于回调的事件处理,另一个是基于监听的事件处理,举个例子: 基于回调的 ...

  5. 使用简单的 5 个步骤设置 Web 服务器集群

    通过在多个处理器之间分担工作负载并采用多种软件恢复技术,能够提供高度可用的环境并提高环境的总体 RAS(可靠性.可用性和可服务性).可以得到的好处包括:更快地从意外中断中恢复运行,以及将意外中断对终端 ...

  6. 与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API

    原文:与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API [索引页][源码下载] 与众不同 windows phone (19) - Dev ...

  7. maven的命令使用笔记

    (1)创建web项目mvn archetype:create  -DgroupId=com.mycompany.webapp  -DartifactId=myweb  -DarchetypeArtif ...

  8. Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012

    [Info   @09:03:33.737] ====================================================================[Info   @ ...

  9. hive编程指南--employees表数据定义

    hive编程指南中有个employees表,默认的分隔符比較繁杂,编辑起来不太方便(普通编辑器编辑的控制字符^A等被当成字符串处理了,没有起到分隔符的作用). 收集的解决方式例如以下: http:// ...

  10. [c++语法]类

    什么是类 类 是 面向对象的基础.c里面是没有对象的,只有数据,即静态的死物. 从面向过程升级到面向对象后,有了对象的概念,对象是数据与方法的合体,是动态的活物. 类代表着一类事物的特征.而对象,是类 ...