Gradle教程和指南 – 创建Gradle构建

Gradle教程和指南 – 创建Gradle构建原文地址:CreatingNewGradleBuilds遵循本指南,你将创建一个Gradle项目,调用一些基本的Gradle命令,并了解Gradle如何管理项目。需要什么大约11分钟终端或者IDE应用程序JDK1.7及以上Gradle4.6及以上Shell命令将基于Unix的系统使用。在Windows中,每个命令都有类似的命令。初始化项…

大家好,又见面了,我是你们的朋友全栈君。

原文地址:Creating New Gradle Builds


遵循本指南,你将创建一个Gradle项目,调用一些基本的Gradle命令,并了解Gradle如何管理项目。

需要什么

Shell命令将基于Unix的系统使用。在Windows中,每个命令都有类似的命令。

初始化项目

首先创建一个目录,即项目的所在目录

❯ mkdir basic-demo
❯ cd basic-demo

然后,我们可以使用Gradle init命令来生成一个简单的项目。我们将探索所有产生的项目文件,以确切知道发生了什么。

❯ gradle init
Starting a Gradle Daemon (subsequent builds will be faster)

BUILD SUCCESSFUL in 3s
2 actionable tasks: 2 executed

该命令应显示BUILD SUCCESSFUL并生成下面的一个空项目。如果没有,请确保Gradle安装正确,并且设置正确的名为JAVA_HOME的环境变量。

下面就是Gradle生成的文件目录:

image

  1. 项目配置脚本,用于配置当前项目中的任务
  2. Gradle Wrappe可执行JAR
  3. Gradle Wrapper配置属性
  4. 用于基于Unix系统的Gradle Wrapper脚本
  5. 用于基于Windows的Gradle Wrapper脚本
  6. 设置配置脚本,用于配置哪些项目参与构建

gradle init命令可以生成不同类型的项目,甚至可以知道如何将简单pom.xml文件转换为Gradle。

我们可以在这里结束指南,但是如果你想知道如何在这个项目中使用Gradle。可以这么做。

创建任务

Gradle提供了通过Groovy或Kotlin的DSL来创建和配置任务的的API。每个Project有一系列执行基本操作的Task

Gradle附带一个用于配置项目的任务库。例如,有个叫做Copy的核心类,它将文件从一个位置复制到另一个位置。Copy任务非常的有用(详情请参阅文档),但是,在这里,我们再一次只是简单的使用它。

执行以下步骤:

  1. 创建名为src的文件夹
  2. 在文件夹src中添加myfile.txt。内容是任意的(甚至可以为空),但为了方便起见,添加一行内容Hello, World!
  3. 在主构建文件build.gradle中定一个名为copyCopy类型任务。它将src目录复制到一个名为dest的新目录中。(你不必创建dest文件夹,任务将替你创建)
task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
    from "src"
    into "dest"
}

在这里,group和description是可以任意设置的。你甚至可以忽略它们,但是,如果这么做,tasks报告中,也会忽略它们,过会我们会用到它们。

现在执行新创建的copy任务:

❯ ./gradlew copy
:copy

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

通过检查在dest文件夹中有名为myfile.txt的文件,并且里面的内容与src中的myfile.txt内容一致来检查该任务是否按照预期执行。

应用插件

Gradle包含一系列插件, the Gradle plugin portal中提供了非常多的插件。这个发行版中包含的一个名为base的插件。与核心类Zip一起使用,可以使用配置的名称和位置创建项目的zip压缩文件。

使用plugins脚本将base插件添加到build.gradle中。确保在文件顶部添加plugins {}代码块。

plugins {
    id "base"
}

... rest of the build file ...

现在添加一个创建src文件夹的zip压缩文件的任务。

task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {
    from "src"
}

base插件与设置一起完成任务,在build/distributions文件夹下创建名为basic-demo-1.0.zip的压缩文件。

在这种情况下,执行任务zip并且查看生成的压缩文件是您所期望的。

❯ ./gradlew zip
:zip

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

探索和调试构建

让我们来看看在新项目中Gradle还能做些什么。还提供了对命令行界面的完整引用。

查看可用的tasks

tasks命令列出你可调用的Gradle任务,包括base插件添加的任务以及刚刚添加的自定义任务。

❯ ./gradlew tasks

> Task :tasks

------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------

Archive tasks -------------
zip - Archives sources in a zip file

Build tasks -----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
clean - Deletes the build directory.

Build Setup tasks -----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Custom tasks ------------
copy - Simply copies sources to a the build directory

Help tasks ----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'basic-demo'.
components - Displays the components produced by root project 'basic-demo'. [incubating]
dependencies - Displays all dependencies declared in root project 'basic-demo'.
dependencyInsight - Displays the insight into a specific dependency in root project 'basic-demo'.
dependentComponents - Displays the dependent components of components in root project 'basic-demo'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'basic-demo'. [incubating]
projects - Displays the sub-projects of root project 'basic-demo'.
properties - Displays the properties of root project 'basic-demo'.
tasks - Displays the tasks runnable from root project 'basic-demo'.

Verification tasks ------------------
check - Runs all checks.

Rules -----
Pattern: clean<TaskName>: Cleans the output files of a task.
Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration.
Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration.

To see all tasks and more detail, run gradlew tasks --all

To see more detail about a task, run gradlew help --task <task>

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

分析和调试你的构建

Gradle还为您的构建提供了一个丰富的,基于Web的视图,称为构建审视。

image

通过使用--scan命令选项或通过显示声明将构建审视插件应用到项目中,您可以免费在链接scans.gradle.com上创建构建审视。构建审视发布到scans.gradle.com 并将这些数据上传到Gradle的服务器。要将数据保存在您自己的服务器上,请查看Gradle Enterprise.

在执行任务时,通过添加 --scan命令选项生成构建审视。

❯ ./gradlew zip --scan

BUILD SUCCESSFUL in 0s
1 actionable task: 1 up-to-date

Publishing a build scan to scans.gradle.com requires accepting the Terms of Service defined at https://scans.gradle.com/terms-of-service. Do you accept these terms? [yes, no]
Gradle Cloud Services license agreement accepted.

Publishing build scan...
https://gradle.com/s/repnge6srr5qs

如果您浏览构建审视,则应该能够轻松找出执行哪些任务以及执行多长时间,应用了哪些插件等等。下次您在StackOverflow上调试某些内容时,请考虑共享构建审视。

Build Scan Plugin用户手册中详细了解如何配置和使用构建审视。

查看可用的properties

properties命令可以查看项目的构建属性。

❯ ./gradlew properties

数据量是很大的。这里只是一些可用的属性:

> Task :properties

------------------------------------------------------------
Root project
------------------------------------------------------------

buildDir: /Users/.../basic-demo/build
buildFile: /Users/.../basic-demo/build.gradle
description: null
group:
name: basic-demo
projectDir: /Users/.../basic-demo
version: unspecified

BUILD SUCCESSFUL

项目的name属性默认与该文件夹名称一致。您也可以指定group和version属性,但是,当前获得的是它们的默认值,就像description属性。

buildFile属性是build.gradle的全限定路径名, 位于buildDir文件夹中 – 默认情况下,是projectDir的build子目录,该目录包含build.gradle文件。

您可以更改许多属性。例如,您可以尝试将以下行添加到build.gradle文件中,然后重新执行gradle properties。

description = "A trivial Gradle build"
version = "1.0"

下一步

恭喜!你已经创建了一个新的Gradle构建,并学习了如何检查Gradle构建!

您可能希望为特定平台创建Library或应用程序,因此以下是一些指南,可以帮助您更多地了解如何在所选平台中创建版本:

  • 构建Android应用程序
  • 构建C ++可执行文件
  • 构建Groovy库
  • 构建Java库
  • 构建Kotlin JVM库
  • 构建Scala库

你也可以在Github clone Gradle构建示例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154170.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 戴尔服务器的远程开机和关机

    戴尔服务器的远程开机和关机手上有一台戴尔的DELLPowerEdgeR210服务器,闲来无事,研究了一下它的远程开机和关机。Dell的服务器默认都带BMC,这个用来做管理的网口和操作系统是共用的同一个网口(注意必需是第一个网口,即服务器上标有1的那个),只要BMC里设置的IP地址和操作系统的IP不一样就可以了。BMC的设置很简单,按以下步骤进行设置:1、在服务器启动时看到Press<Ct…

  • c# 看门狗 程序_看门狗制作东西怎么切换

    c# 看门狗 程序_看门狗制作东西怎么切换C#制作简单的看门狗程序这个类实现了程序退出能重启,但是程序停止运行弹出对话框,进程并没有退出却无法重启。希望有好建议处理这个bug的朋友提出你们的宝贵意见。源码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Diagnostics;usi

  • HTML5触摸事件(touchstart、touchmove和touchend)

    HTML5触摸事件(touchstart、touchmove和touchend)HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享。今天为大家介绍的事件主要是触摸事件:touchstart、touchmove和touchend。  一开始触摸事件touchstart、touchmove和touchend是iOs版Safari浏览器为了向开发人员

  • C++ Opencv imfill 孔洞填充函数的实现(学习笔记)[通俗易懂]

    C++ Opencv imfill 孔洞填充函数的实现(学习笔记)[通俗易懂]C++Opencvimfill孔洞填充函数的实现函数实现的中心思想二值图寻找连通域的关键种子点的确定连通域的寻找过程条件设定最后赋值话不多说直接上函数代码主函数代码代码框截图实例图片运行结果函数实现的中心思想二值图此程序针对于二值图,寻找二值图中像素值为0的连通域,将所有连通域的像素点分别保存下来,将符合条件的连通域的像素值置为255;寻找连通域的关键针对填洞功能的实现,也就…

  • Struts2漏洞复现合集

    Struts2漏洞复现合集1.Struts2简介Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务

  • SIGPIPE信号问题

    SIGPIPE信号问题
    socket编程问题
    SIGPIPE信号问题=========================
    当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。
       根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGP

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号