Gradle 入门

Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具。它使用一种基于 Groovy 的特定领域语言( DSL )来声明项目设置,抛弃了基于 XML 的各种繁琐配置。

现在,Gradle 面向 Java 应用为主,当前其支持的语言限于 Java、Groovy、Kotlin 和 Scala。

完整的 Gradle API 是使用 Groovy 语言设计的。这是基于 XML 内部 DSL 的优点。Gradle 是其核心的通用构建工具; 它的主要焦点是 Java 项目。在这些项目中,团队成员要熟悉 Java,这是为了更好的构建透明,给所有团队成员的项目。类似于 Python ,Groovy 或 Ruby 语言是最好的构建框架。为什么 Groovy 被选中?这是因为它为使用 Java 的人提供了迄今为止最大的透明度。Groovy的基本语法与Java是一样的。

Gradle的功能

  • 按约定声明构建和建设;
  • 强大的支持多工程的构建;
  • 强大的依赖管理(基于 Apache Ivy),提供最大的便利去构建工程;
  • 全力支持已有的 Maven 或者 Ivy 仓库基础建设;
  • 支持传递性依赖管理,在不需要远程仓库和 pom.xml 和 ivy 配置文件的前提下;
  • 基于 groovy 脚本构建,其 build 脚本使用 groovy 语言编写;
  • 具有广泛的领域模型支持构建;
  • 深度 API;
  • 易迁移;
  • 自由和开放源码,Gradle 是一个开源项目,基于 ASL 许可。

Gradle的安装(windows)

前提条件
  • Windows 8 (或更高版本,在此以 Windows 10 Pro 64bit 为示例)
  • Java JDK必须安装(本教程 JDK1.8)

从网站上下载 Gradlehttp://www.gradle.org/install/ , 当前最新版本是 GRADLE 4.7
下载后将它解压缩。 通常把这样的东西放入到我的开发目录中。如:D:\Development 目录下。现在,在桌面上右键点击“此电脑”,然后选择“属性”,打开 “高级” 选项卡,如下图所示:

此电脑-高级系统设置-高级-环境变量

新建系统变量

  • 变量名:GRADLE_HOME
  • 变量值:D:\Development\gradle-4.7
    新建系统变量GRADLE_HOME

    在Path中添加 %GRADLE_HOME%\bin
    Path变量增加Gradle

    验证:通过win+r,输入cmd打开dos命令窗口,执行gradle -v,出现如下图即安装成功
    gradle -v

Gradle依赖管理

Gradle 构建脚本定义了构建项目的过程;每个项目包含一些依赖项和一些发表项。依赖性意味着支持构建项目的东西,例如来自其他项目的所需 JAR 文件以及类路径中的外部 JAR(如 JDBC JAR 或 Eh-cache JAR )。发布表示项目的结果,如测试类文件和构建文件,如 war 文件。

Gradle 负责构建和发布结果。 发布基于定义的任务。 可能希望将文件复制到本地目录,或将其上传到远程 Maven 或 lvy 存储库,或者可以在同一个多项目构建中使用另一个项目的文件。发布的过程称为发布。

声明依赖关系

Gradle 遵循一些特殊语法来定义依赖关系。 以下脚本定义了两个依赖项,一个是Hibernate core 3.5.0,第二个是Junit 4.0和更高版本。如下面的代码所示,可在build.gradle文件中使用此代码。

apply plugin: 'java'

repositories {
   mavenCentral()
}

dependencies {
   compile group: 'org.hibernate', name: 'hibernate-core', version: '3.5.0.Final'
   testCompile group: 'junit', name: 'junit', version: '4.+'
}
依赖关系配置

依赖关系配置只是定义了一组依赖关系。 您可以使用此功能声明从Web下载外部依赖关系。这定义了以下不同的标准配置。

  • 编译 − 编译项目的生产源所需的依赖关系。
  • 运行时 - 运行时生产类所需的依赖关系。 默认情况下,还包括编译时依赖项。
  • 测试编译 - 编译项目测试源所需的依赖项。 默认情况下,它包括编译的产生的类和编译时的依赖。
  • 测试运行时 - 运行测试所需的依赖关系。 默认情况下,它包括运行时和测试编译依赖项。
外部依赖

外部依赖是一种依赖。 这是对当前构建之外构建的一些文件的依赖,并且存储在某种类型的存储库中,例如:Maven central,corporate Maven 或 lvy repository 或本地文件系统中的目录。
以下代码片段是定义外部依赖关系。 在build.gradle文件中使用如下代码。

dependencies {
   compile group: 'org.hibernate', name: 'hibernate-core', version: '3.5.0.Final'
}
存储库

在添加外部依赖关系时,Gradle在存储库中查找它们。存储库只是文件的集合,按分组、名称和版本来组织构造。默认情况下,Gradle 不定义任何存储库。我们必须至少明确地定义一个存储库。下面的代码片段定义了如何定义 maven 仓库。 在build.gradle文件中使用此代码。

repositories {
   mavenCentral()
}

定义远程maven,可在build.gradle文件中可使用下面代码。

repositories {
   maven {
      url "http://repo.(companyName).com/maven2"
   }
}
发布文件

依赖关系配置也用于发布文件。这些已发布的文件称为工件。通常,我们使用插件来定义工件。 但是需要告诉 Gradle 在哪里发布文件。可以通过将存储库附加到上传存档任务来实现此目的。请查看以下用于发布Maven存储库的语法。执行时,Gradle 将根据项目需求生成并上传 Pom.xml。 在build.gradle文件中使用此代码。

apply plugin: 'maven'

uploadArchives {
   repositories {
      mavenDeployer {
         repository(url: "file://localhost/tmp/myRepo/")
      }
   }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,773评论 6 342
  • 是什么? 在语法上是基于Groovy语言的(Groovy 是一种基于JVM的敏捷开发语言,可以简单的理解为强类型语...
    千山万水迷了鹿阅读 99,517评论 4 122
  • Gradle是一款非常优秀的构建系统工具,它的DSL基于Groovy实现,可以让你很方便的通过代码控制这些DSL来...
    飞雪无情flysnow_org阅读 3,515评论 0 35
  • 笔者偶尔会遇到这样的问题,在6Plus上,启动页除了UIImageView之外,都能正常显示。(这可能是苹果的一个...
    Chakery阅读 693评论 1 1