项目 & 任务

Gradle 的一切都是基于项目和任务的。

构建由一个或多个项目组成。项目的概念很抽象,它取决于你要用Gradle 做什么 。项目可以是 一个 Jar 库或者一个 web 程序。也可以是一个 zip 压缩包,也可以是将项目部署到生产环境等等;

一个项目是由一个或多个任务组成的;任务是构建工作的原子单位,最小的工作单元。例如:编译字节码,创建 jar 。

Hello World

创建一个简单的任务,输出 Hello World!.

Groovy

task hello{
doLast {
println 'Hello World.'
}
}

Kotlin

tasks.register("hello"){
doLast {
println ("Hello World.")
}
}

输入命令 运行该任务

gradle hello

创建一个简单的构建

新建一个目录

使用 init 命令创建构建项目

Gradle 现在支持两种--Kotlin DSL 和 Groovy DSL .默认是 基于Groovy的,如果要使用 Kotlin 可以 使用 --dsl kotlin

gradle init --dsl kotlin

会生成如下目录

其中 .gitigonre 是 git 忽略文件;.gradle 是 gradle 的一些信息。

需要我们关注的是下面这些文件

├── cradle

│ └── wrapper

│ ├── gradle-wrapper.jar

│ └── gradle-wrapper.properties

├── build.gradle.kts

├── gradlew

├── gradlew.bat

└── settings.gradle.kts

  • warpper 是 Gradle Wrapper 使用的目录
  • gradle-wrapper.jar 是执行 Gradle Wrapper 使用的
  • gradle-wrapper.properties 是 配置 Gradle Wrapper 属性的
  • build.gradle.kts 用于配置当前项目的Gradle构建脚本
  • gradlew 是 Unix 机器上的 执行脚本
  • gradlew.bat 是 window 上的执行脚本
  • settings.gradle.kts 是 用于配置Gradle构建的Gradle设置脚本

创建任务

Gradle提供了通过Groovy或基于kotlin的DSL创建和配置任务的api。项目包含一组任务,每个任务执行一些基本操作。

Gradle提供了一个任务库,我们可以在自己的项目中配置这些任务。例如,有一个核心类型的 Copy 任务,它可以复制文件。

下面我们就配置这个 任务来使用一下。

创建一个目录 src

在 src 下创建一个文件名称任意,例如 myFile.txt。添加任意内容,例如 Hello World!

在 配置脚本(build.gradle.kts) 添加 一个 Copy 类型的 copy 任务,从 src 目录复制到 dest 目录

Gradle 在执行时会自动创建 dest 目录。

Kotlin

 tasks.register<Copy>("copy"){
description = "Copies sources to the dest directory"
group = "Custom"
from("src")
into("dest") }

Groovy

task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
from "src"
into "dest"
}

description 和 group 都是可选的,可以随便你定义;也是可以省略的;

执行 copy 任务

gradle copy

检查里面的 myFile.txt 是否复制完成。

使用插件

Gradle 提供了大量的插件,在 Gradle 插件站 可以查到

今天使用 一个 base 插件 结合它的核心类型 Zip 任务,实现打包压缩包的任务。

使用 base 插件

Kotlin

plugins {
id("base")
} ... rest of the build file ...

Groovy

plugins {
id "base"
} ... rest of the build file ...

创建一个 zip 任务,扩展自 核心类型 Zip

Kotlin

tasks.create<Zip>("zip") {
description = "Archives sources in a zip file"
group = "Archive" from("src")
setArchiveName("basic-demo-1.0.zip")
}

Groovy

task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {
from "src"
setArchiveName "basic-demo-1.0.zip"
}

执行 zip

gradle zip

至此,一个简单的构建完成了。

分析构建过程

Gradle 提供了一个基于 web的构建视图——构建扫描

在执行时 使用 --scan 选项或者明确使用构建扫描插件都可以免费的在 https://scans.gradle.com 创建一个扫描视图分析

gradle zip --scan

在同一服务条款后会直接发送到 构建扫描的平台,复制下面的连接打开即可。

打开之后会有详细的项目构建分析

End

Gradle——创建简单的项目的更多相关文章

  1. Intellij创建简单Springboot项目

    Intellij创建简单Springboot项目 第一步:选择创建新项目——file-new-project 第二步:选择项目类型——Spring Initializr-next 第三步:输入项目信息 ...

  2. 创建简单web项目

    Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系统环境变量,tomcat7上tomcat的官网下载压缩包解压即可. 一.创 ...

  3. 使用Gradle创建java web项目

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

  4. 使用Intellij Idea创建简单Maven项目(转)

    我是学Java Web的,基本靠自学,在网上收集了各种视频资料,逐一的看,代码逐一的敲.学习了这么久之前一直未成想过要把自己的学习路程记录下来,在网上也看到过很多人把自己的学习历程以及遇到的问题写在了 ...

  5. IDEA创建简单SpringBoot项目

    环境:jdk 1.打开IDEA -->New --> Project -->Spring Initalizer-->next 2.此处,只做创建示例,所以next后Group等 ...

  6. truffle init 从零开始创建简单DApp项目

    下面的部分软件需要FQ.这里默认你已经会***,不懂的可以自己搜索解决. 软件安装 chrome浏览器 下载地址 metamask插件 在谷歌应用商店中搜索metamask ganche(图形版) 下 ...

  7. IDEA创建简单SSM项目使用传统Jar包

    #IDEA SSM项目使用传统Jar包 创建项目 下一步,命名 下一步,创建完成 下一步,创建资源文件夹resources 页面概览 左侧目录树 演示如下 一些简单的说明 其中包之间的层次调用 ent ...

  8. 手动创建简单webpack项目及React使用

    一.创建基本的webpack4.x项目 1.运行 npm init -y 快速初始化项目 2.在项目根目录创建src的源代码目录和dist产品目录 3.在src目录下创建 index.html 4.使 ...

  9. 创建简单Maven项目

    目录: Maven基础构建概念.仓库.构建与部署 Maven作用 Maven项目install Maven安装配置.目录结构.配置文件 配置Maven默认本地仓库 Maven常见命令 使用Maven ...

随机推荐

  1. SSAS Tabular 表格模型建模(关系)及部署

    一.表格建模(SSAS 表格)   表格模型是 Analysis Services 中的内存中数据库. 使用最先进的压缩算法和多线程查询处理器,xVelocity 内存中分析引擎 (VertiPaq) ...

  2. linux 安装weblogic12.1.3.0步骤

    此过程为jar包安装~ 需注意:fmw_12.1.3.0.0_wls.jar     需要jdk1.7.0_15以上的版本 1.安装JDK(若已装可跳过) (1)Oracle官网下载jdk linux ...

  3. pycharm编辑器配置(持续更新完善)

    谨记:pycharm仅是一款编辑器,不要太依赖 pycharm的提示,不然后期换了编辑器就不行了 python解释器安装.多版本共存等 去python官网下载安装,配置环境变量.多版本共存等问题请参见 ...

  4. Python学习6——再谈抽象(面对对象编程)

    1.对象魔法 在面对对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法. 使用对象而非全局变量以及函数的原因有多个,而最重要的好处不过以下几点: 多态:可对不同类型的对象 ...

  5. linux初学者-pxe装机篇

    linux初学者-pxe装机篇 PXE的网络装机是客户机从自己的网卡启动,向本网络中的DHCP服务器索取ip,并从本网络的TFTP服务器中索取启动文件进行装机.此装机需要kickstart.tftp. ...

  6. Django的性能优化

    Django的性能优化   一,利用标准数据库优化技术 传统数据库优化技术博大精深,不同的数据库有不同的优化技巧,但重心还是有规则的.在这里算是题外话,挑两点通用的说说: 索引,给关键的字段添加索引, ...

  7. visionpro和halcon这两款机器视觉软件区别

    很多朋友会问到visionpro和halcon这两款机器视觉软件,到底学哪个好呢,今天重码网就给大家讲一讲: 首先比较下两者的优缺点: halcon: 提供的图像算法要比Visionpro多,也就是说 ...

  8. handlerAdapter与方法调用(参数的解析)

    前提:当找到handler以后,那么就要让handler发挥作用,这个时候handlerAdapter就派上用场了 这里面比较复杂就是requestMappingHandlerAdapter了,其他的 ...

  9. Thinkphp 3.2.3 parseWhere设计缺陷导致update/delete注入 分析

    目录 分析 总结 分析 首先看一下控制器,功能是根据用户传来的id,修改对应用户的密码. 13行把用户传来的id参数送入where()作为SQL语句中的WHERE语句,将pwd参数送入save()作为 ...

  10. Kafka服务不可用(宕机)问题踩坑记

    背景 某线上日志收集服务报警,打开域名报502错误码. 收集服务由2台netty HA服务器组成,netty服务器将客户端投递来的protobuf日志解析并发送到kafka,打开其中一个应用的日志,发 ...