本人工作之初没有使用自动化构建,后来敏捷了,开始使用 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. Swift - 使用Core Data进行数据持久化存储

    一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象. ...

  2. Qt学习经验之quit()、exit()、close()《转载》

       使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的.种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用.关于窗口关闭的操作,在这里指出常用的三个槽,即quit(),e ...

  3. zabbix 主机名必须要能ping通

    api01:/home/tomcat> cat /etc/hosts 127.0.0.1 localhost ::1 localhost localhost.localdomain localh ...

  4. uva 140

    思路:暴力+剪枝 uva140 wa了好多次……数组开小了……!!! #include <iostream> #include <cstdio> #include <cm ...

  5. js获取手机型号和手机操作系统版本号

    1.js 判断IOS版本号 先来观察 iOS 的 User-Agent 串: iPhone 4.3.2 系统:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 l ...

  6. RapidCRC : Home

    RapidCRC : Home   What is RapidCRC? RapidCRC is a tool for windows for checking and creating CRC32 a ...

  7. css Gradients(渐变)

    渐变分为4类 1:线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向 2:径向渐变(Radial Gradients)- 由它们的中心定义 3:对角渐变 4:角度渐变 以 ...

  8. JPA的Embeddable注解

    来源于http://zjsword2000.blog.163.com/blog/static/4583983320083184844734/ 在hibernate中实现自定义类型,只要实现UserTy ...

  9. POJ 2184 Cow Exhibition 01背包

    题意就是给出n对数 每对xi, yi 的值范围是-1000到1000 然后让你从中取若干对 使得sum(x[k]+y[k]) 最大并且非负   且 sum(x[k]) >= 0 sum(y[k] ...

  10. Setup SSH and SVN on Windows Server

    cygwin: install sshd, cygrunsrv http://lifehacker.com/205090/geek-to-live--set-up-a-personal-home-ss ...