一、Gradle是什么

Gradle是一种Java应用构建工具,它采用领域特定语言 Groovy 语法实现配置。

1、Gradle的基本概念

项目:项目的配置 即 build.gradle。

任务:任务的配置包含在项目配置中。

多项目:多项目的配置即 gradle.settings, 对于只有一个项目的构建而言是 gradle.settings 可选的。

1.1、项目 (build.gradle

  • 每个Gradle的构建由一个project构成,它代表着需要被构建的组件或者构建的整个项目。
  • 项目是指我们的构建产物(比如Jar包)或实施产物(将应用程序部署到生产环境)。

1.2、任务

  • 一个项目包含一个或多个任务。
  • 任务 task 代表着 Gradle 构建过程中可执行的最小单元。

例如:当构建一个组件时,可能需要编译、打包、生成文档、发布等多个步骤,其中的每个步骤都可以定义成一个task。

  • 任务是指不可分的最小工作单元,执行构建工作(如:编译项目或执行测试)。
  • Gradle构建脚本(build.gradle)指定了一个项目和它的多个任务。

1.3、多项目(gradle.settings)

  • 如果我们的构建中包含多于一个项目,那么它就是必须的
  • 它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。

1.4、属性文件 gradle.properties

  • Gradle属性文件(gradle.properties)用来配置构建属性。

1.5、gradle插件

Gradle插件提供Gradle的各种特性,一个Gradle插件能够:

  • 在项目中添加新任务
  • 为新加入的任务提供默认配置,这个默认配置会在项目中注入新的约定(如:源文件位置)。
  • 加入新的属性,可以覆盖插件的默认配置属性。
  • 为项目加入新的依赖。

Gradle用户手册提供了一系列标准Gradle插件如:

  • java 插件
  • war 插件
  • application 插件

2、如何使用gradle

Gradle通过插件提供各种特性,在build.gradle配置文件中,加入gradle插件的方法有两种:

2.1、根据名称或类型来指定Gradle插件

如:下面代码通过名称指定Gradle插件(这里的名称是 foo):

      • apply plugin: 'foo'

 

2.2、通过类型指定Gradle插件

如:下面代码通过类型指定Gradle插件(这里的名称是 com.bar.foo)

  apply plugin: 'com.bar.foo' 

二、安装和使用gradle

1、下载和安装Gradle

1.1、下载解压 Gradle

https://gradle.org/install

1.2、设置环境变量

设置环境变量 GRADLE_HOME=D:\TOOLS\GRADLE3.2.1

配置path %GRADLE_HOME%/bin

1.3、验证安装

C:\Users\liangshengqi>gradle -v

------------------------------------------------------------
Gradle 3.2.1
------------------------------------------------------------

Build time: 2016-11-22 15:19:54 UTC
Revision: 83b485b914fd4f335ad0e66af9d14aad458d2cc5

Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_131 (Oracle Corporation 25.131-b11)
OS: Windows 10 10.0 amd64

C:\Users\liangshengqi>gradle -version

------------------------------------------------------------
Gradle 3.2.1
------------------------------------------------------------

Build time: 2016-11-22 15:19:54 UTC
Revision: 83b485b914fd4f335ad0e66af9d14aad458d2cc5

Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_131 (Oracle Corporation 25.131-b11)
OS: Windows 10 10.0 amd64

2、使用gradle创建一个Java项目

2.1、使用java插件

创建build.gradle, 代码如下:

apply plugin: 'java'

Java插件会在我们的构建中添加一些新的约定(如默认的项目结构),新的任务,和新的属性。

默认的项目结构如下:

  • src/main/java目录包含了项目的源代码。
  • src/main/resources目录包含了项目的资源(如属性文件)。
  • src/test/java目录包含了测试类。
  • src/test/resources目录包含了测试资源。
  • build目录我们构建生成的文件都会这里创建,这个目录涵盖了以下的子目录
  • classes目录包含编译过的.class文件。
  • libs目录包含构建生成的jar或war文件。

2.2、开发和配置运行主类

编写一个运行主类

package com.inspur.example.gradle;
public class HelloGradle {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

在build.gradle中配置主类

apply plugin: 'java'
jar {
    manifest {
        attributes 'Main-Class': 'com.inspur.example.gradle.HelloGradle'
    }
}

2.3、编译打包

我们可以通过使用两个不同的任务来打包项目。

  方法1:在命令提示符中执行命令gradle assemble

   方法2:在命令提示符中执行命令gradle build

   

两者区别:

assemble任务仅仅执行项目打包所必须的任务集。

build任务执行项目打包所必须的任务集,以及执行自动化测试。

这两个命令都会在build/libs目录中创建一个HelloGradle.jar文件。

默认创建的Jar文件名称是由这个模版决定的:[projectname].jar,

此外,项目的默认名称和其所处的目录名称是一致的。

因此如果项目目录名称是Helloworld,那么创建的Jar文件名称就是Helloworld.jar。

2.4、运行程序

在执行gradle assemble或gradle build命令生成一个新的jar文件之后,我们可以执行以下命令运行jar文件:

java -jar HelloGradle.jar
Hello World!

三、为什么引入gradle?

1、为什么需要打包

最初写完了程序,直接右键run就可以了。但是程序写完了是要发布到服务器上或者给别人用的,你第一不可能让所有要运行的人都装个eclipse,第二不可能把源代码公布给所有人。所以你需要把你的代码发布成二进制形式,让其它环境方便运行,这就是打包。

2、为什么用ant?--支持自动化打包

打包的时候要做很多事,

比如说配置文件中的用户名和密码,你本地开发和程序实际运行时的内容肯定不一致,

所以需要有两个文件,开发的时候用一个,实际运行的时候用一个。

这样每次打包的时候都要重复的做这些事,ant可以让你用xml的形式把这些事情写成脚本,然后自动运行。

3、为什么用maven?-支持依赖管理

你的项目要用很多jar包,比如你写日志要用个log4j吧,连数据库要用个connector吧。这年头写程序不用个spring都不好意思出门,下载下来的spring包打开一看,密密麻麻的好几十个jar,不知道用哪个不用哪个。而且,即便是你一狠心把这些jar包都放进来,很大可能性还是不能运行,因为还要依赖其它的jar包。哪天想升级个spring小版本,所有jar包都要重来一遍,你也不记得哪些是由于spring引进来的jar包了。
所以有了maven,你只要配置一下说我要用spring 3,所有jar包都给你下载好了,你直接运行就行了。赶明儿想升级版本,直接把3改成4,新的jar包也给你下载好了。

4、为什么使用gradle?- 支持两者的优点,还能写脚本呢!!!

用了maven,jar包是方便了,但我打包的时候还是有好多事要做啊,然后你会发现maven实在是不知道怎么做这些事,于是开始怀念ant。

gradle就是又能干maven的活,又能干ant的活,用groove语言写脚本,表达能力还更强。

gradle入门(1-1)gradle的概念和使用的更多相关文章

  1. gradle入门

    gradle入门 简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于 ...

  2. 【Gradle教程】Gradle 入门

    本文为我在学习群内分享时在B站直播分享时的文档,直播间地址 http://live.bilibili.com/22263819 PS:问一下,Linux下有什么好用的会议软件么? 知道的朋友烦请评论告 ...

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

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

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

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

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

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

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

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

  7. Java Gradle入门指南之内建与定制任务类(buildSrc、Groovy等)

        上一篇随笔介绍了Gradle的安装与任务管理,这篇着重介绍Gradle的内建任务(in-built tasks)与自定义任务(custom tasks),借助Gradle提供的众多内建任务类型 ...

  8. Java Gradle入门指南之简介、安装与任务管理

        这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍.    ...

  9. Gradle学习系列之一——Gradle快速入门

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

随机推荐

  1. [转]SVN使用log,list,cat,diff查看所有及特定文件版本信息

    [转]SVN使用log,list,cat,diff查看所有及特定文件版本信息 http://onefishum.blog.163.com/blog/static/5184730520113153402 ...

  2. python自动拉取备份压缩包并删除3天前的旧备份

    业务场景,异地机房自动拉取已备份好的tar.gz数据库压缩包,并且只保留3天内的压缩包文件,用python实现 #!/usr/bin/env python import requests,time,o ...

  3. WordPress非插件实现评论回复邮件提醒通知

    要想在第一时间知道有人在自己博客留言,然后在第一时间回复留言再第一时间通知邮件者,这就需要WordPress博客拥有邮件通知功能. 先看效果: 评论邮件通知的方法: 1.所有回复都发送邮件通知 登陆博 ...

  4. 使用jitpack来获取github上的开源项目

    在开发中我们需要经常使用第三方依赖库,在构建工具Gradle或maven中声明依赖, 大部分使用的是maven中心仓库或者阿里云仓库等等,但是这样也存在一个问题,上述仓库的库虽然简单快捷好用,但并不是 ...

  5. Java后台模拟发送http的get和post请求,并测试

    个人学习使用:谨慎参考 1 Client类 import com.thoughtworks.gauge.Step; import com.thoughtworks.gauge.Table; impor ...

  6. mac安装tensorflow

    tensorflow简介 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数 ...

  7. Go实现海量日志收集系统(一)

    项目背景 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现实 当然即使是机器规模不大,一个系统通常 ...

  8. WinSock 异步I/O模型

    如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的. Windows操作系统提供了五种I/O模型,分别是选择(select)模型,异步选择(WSAAsyncSelect)模型, ...

  9. web 表单提交按钮的测试点

    web表单中的提交按钮的测试点: 在提交前需要理解清楚的点: 1.表单中哪些字段是必填项 2.表单中字段内容的限制:非空.重复.长度.特殊字符,空格.以及一些和业务相关的约束条件 测试点: 1.是否支 ...

  10. echarts地图的引用

    最近是跟echarts杠上了 所在公司是搞数据的 所以身为前端的我 就必须使用echarts将数据展示出来 ,进公司一周 ,前前后后大概用了八九种echarts图,我举得最难的就是引用的地图,因为刚开 ...