基于 Groovy 的自动化构建工具 Gradle 入门(转)

时间:2022-03-02 20:25:57

本人工作之初没有使用自动化构建,后来敏捷了,开始使用 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 一样能处理依赖的依赖

基于 Groovy 的自动化构建工具 Gradle 入门(转)
从上图看到下载的依赖包在 ~/.gradle/caches 目录中,在 Eclipse 中象普通 Java 项目那样第三方包列在 Referenced Libraries 下,这样不需要第三方 Eclipse 插件便能运行。

5. 构建

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

gradle build
gradle javadoc
gradle test


以下内容仅作参考:

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

基于 Groovy 的自动化构建工具 Gradle 入门(转)
Eclipse 需要特定的插件来支持 Maven 和 Ivy 产生的依赖

基于 Groovy 的自动化构建工具 Gradle 入门(转) 基于 Groovy 的自动化构建工具 Gradle 入门(转)

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

基于 Groovy 的自动化构建工具 Gradle 入门(转)

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

Gradle 官方用户指南