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)
blank

相关推荐

  • JS字符串补全方法padStart()和padEnd()简介

    JS字符串补全方法padStart()和padEnd()简介一、关于字符串补全在JS中,字符串补全是常用操作,用的比较多的就是时间或者日期前面的补0。例如,日期,我们多采用4-2-2的表示形式,例如:2018-07-23当我们使用时间戳进行月份获取的时候,是没有前面的0的,例如:varmonth=newDate().getMonth()+1;//结果是7此时,就需要进行补全,通常做法是这样:if(month<10){month=’0’+month;}甚至会专门定义一

  • java开发工程师的简历怎么写(应聘网络工程师简历)

    这是一篇我比较想看到的简历指导的文章。但是我比较反对简历造假。我觉得会什么写什么把。Java就业指导  想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能。相信此文…

  • 父子组建传值_详解Vue之父子组件传值

    父子组建传值_详解Vue之父子组件传值一、简要介绍父子组件之间的传值主要有三种:传递数值、传递方法、传递对象,主要是靠子组件的props属性来接收传值,下面分别介绍:(一)传递数值1.子组件:Header.vue{{msg}}exportdefault{data(){return{}},methods:{},//接收父类的传值props:[‘msg’]}可以看到,在子组件中的data对象里并没有msg属性,这里调…

  • github上开源的优秀android项目

    github上开源的优秀android项目源码大招:不服来战!撸这些完整项目,你不牛逼都难!经常有人问我有没有什么项目代码,我回复说去Github找,但是还是好多人不知道如何找到那些比较好的项目。今天花了点时间找了些安卓的项目,觉得还是不错的,几乎就是自己生活常用的一些app,如果你是一个Android开发者,我觉得撸完这些项目,你想不牛逼都难。菜鸟新闻菜鸟新闻客户端是一个仿照36Kr官方,实时抓取36Kr…

  • datax(23):dataX调优[通俗易懂]

    datax(23):dataX调优[通俗易懂]调优前需要先知道datax任务的执行过程;一、调优方向网络本身的带宽等硬件因素造成的影响;DataX本身的参数;即当觉得DataX传输速度慢时,需要从上述两个个方面着手开始排查。二、网络本身的带宽等硬件因素造成的影响此部分主要需要了解网络本身的情况,即从源端到目的端的带宽是多少(实际带宽计算公式),平时使用量和繁忙程度的情况,从而分析是否是本部分造成的速度缓慢。以下提供几个思路。1,可使用从源端到目的端scp,pythonhttp,nethogs等观察实际网络及网卡速度;2,结合.

  • mt4 python_一个使用Python自动化交易外汇MT4脚本实现「建议收藏」

    mt4 python_一个使用Python自动化交易外汇MT4脚本实现「建议收藏」安装C++运行环境[需要C++的运行环境,TheDLLsrequirethatyouhavethelatestVisualC++runtime(2015)]:https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads克隆代码下来关闭杀毒软件!!!解压MT4配置…

发表回复

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

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