iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >现代高效的java构建工具gradle的快速入门
  • 153
分享到

现代高效的java构建工具gradle的快速入门

2024-04-02 19:04:59 153人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

  和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的P

  和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等。与Maven不同的是,Gradle不提供内建的项目生命周期管理,只是java Plugin向Project中添加了许多Task,这些Task依次执行,为我们营造了一种如同Maven般项目构建周期。更多有关Maven的知识,读者可以访问Maven官网,或者可以参考笔者写的Maven学习系列文章。 

  现在我们都在谈领域驱动设计,Gradle本身的领域对象主要有Project和Task。Project为Task提供了执行上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project中添加不同的Task。一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码,拷贝文件,打包jar文件,甚至可以是执行一个系统命令或者调用Ant。另外,一个Task可以读取和设置Project的Property以完成特定的操作。

  让我们来看一个最简单的Task,创建一个build.gradle文件,内容如下:


task helloWorld << {
   println "Hello World!"
}

  这里的“<<”表示向helloWorld中加入执行代码——其实就是groovy代码。Gradle向我们提供了一整套DSL,所以在很多时候我们写的代码似乎已经脱离了groovy,但是在底层依然是执行的groovy。比如上面的task关键字,其实就是一个groovy中的方法,而大括号之间的内容则表示传递给task()方法的一个闭包。除了“<<”之外,我们还很多种方式可以定义一个Task,我们将在本系列后续的文章中讲到。

  在与build.gradle相同的目录下执行:


gradle helloWorld

  命令行输出如下:


:helloWorld
Hello World!

BUILD SUCCESSFUL

Total time: 2.544 secs

  在默认情况下,Gradle将当前目录下的build.gradle文件作为项目的构建文件。在上面的例子中,我们创建了一个名为helloWorld的Task,在执行gradle命令时,我们指定执行这个helloWorld Task。这里的helloWorld是一个DefaultTask类型的对象,这也是定义一个Task时的默认类型,当然我们也可以显式地声明Task的类型,甚至可以自定义一个Task类型(我们将在本系列的后续文章中讲到)。

  比如,我们可以定义一个用于文件拷贝的Task:


task copyFile(type: Copy) {
   from 'xml'
   into 'destination'
}

  以上copyFile将xml文件夹中的所有内容拷贝到destination文件夹中。这里的两个文件夹都是相对于当前Project而言的,即build.gradle文件所在的目录。

  Task之间可以存在依赖关系,比如taskA依赖于taskB,那么在执行taskA时,Gradle会先执行taskB,然后再执行taskA。声明Task依赖关系的一种方式是在定义一个Task的时候:


task taskA(dependsOn: taskB) {
   //do something
}

  Gradle在默认情况下为我们提供了几个常用的Task,比如查看Project的Properties、显示当前Project中定义的所有Task等。可以通过一下命令查看Project中所有的Task:


gradle tasks

  输出如下:

:tasks

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

Build Setup tasks
-----------------
setupBuild - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]

Help tasks
----------
dependencies - Displays all dependencies declared in root project 'gradle-blog'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-blog'.
help - Displays a help message
projects - Displays the sub-projects of root project 'gradle-blog'.
properties - Displays the properties of root project 'gradle-blog'.
tasks - Displays the tasks runnable from root project 'gradle-blog'.

Other tasks
-----------
copyFile
helloWorld

To see all tasks and more detail, run with --all.

BUILD SUCCESSFUL

Total time: 2.845 secs

  可以看到,除了我们自己定义的copyFile和helloWorld之外,Gradle还默认为我们提供了dependencies、projects和properties等Task。dependencies用于显示Project的依赖信息,projects用于显示所有Project,包括根Project和子Project,而properties则用于显示一个Project所包含的所有Property。

  在默认情况下,Gradle已经为Project添加了很多Property,我们可以调用以下命令进行查看:


gradle properties

  输出如下:

:properties

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

allprojects: [root project 'gradle-blog']
ant: org.gradle.api.internal.project.DefaultAntBuilder@1342097

buildDir: /home/davenkin/Desktop/gradle-blog/build
buildFile: /home/davenkin/Desktop/gradle-blog/build.gradle
...
configurations: []
convention: org.gradle.api.internal.plugins.DefaultConvention@11492ed
copyFile: task ':copyFile'
...
ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@1b5d53a
extensions: org.gradle.api.internal.plugins.DefaultConvention@11492ed
...
helloWorld: task ':helloWorld'
...
plugins: [org.gradle.api.plugins.HelpTasksPlugin@7359f7]
project: root project 'gradle-blog'
...
properties: {...}
repositories: []

tasks: [task ':copyFile', task ':helloWorld']
version: unspecified

BUILD SUCCESSFUL

Total time: 2.667 secs

  在以上Property中,allprojects表示所有的Project,这里只包含一个根Project,在多项目构建中,它将包含多个Project;buildDir表示构建结果的输出目录;我们自己定义的helloWorld和copyFile也成为了Project中的Property。另外,Project还包括用于执行Ant命令的DefaultAntBuilder(Property名为ant)和Project的描述属性description。

  在下一篇文章中,我们将讲到创建Task的多种方法。

请通过以下方式下载本系列文章的GitHub示例代码:


git clone https://github.com/davenkin/gradle-learning.git

到此这篇关于现代高效的java构建工具gradle的快速入门的文章就介绍到这了,更多相关gradle 入门内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 现代高效的java构建工具gradle的快速入门

本文链接: http://www.lsjlt.com/news/156028.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 现代高效的java构建工具gradle的快速入门
      和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的P...
    99+
    2024-04-02
  • 怎么快速入门轻量快速的CI工具Drone
    怎么快速入门轻量快速的CI工具Drone,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言公司之前一直在使用 Jenkins 作为 CI/CD 工具, Jenkins 非常强大...
    99+
    2023-06-19
  • 认识Vue更高效的构建工具—Vite
    本文章将为大家介绍新一款的构建工具——Vite,当然我们Vite更多的是被用于开发阶段,下面也为大家介绍到了 Vite 想比于 webpack 编译中的优势,以及Vite构建Vue3项目的步骤教程,赶快跟着我尝试一下吧!webpack我们在...
    99+
    2023-05-14
    Vue vue3 vue.js vite
  • 快速高效的dedecms转换工具比较分析
    快速高效的DedeCMS转换工具比较分析 背景介绍 DedeCMS是一款常用的开源内容管理系统,但随着技术发展,有时候我们需要将DedeCMS转换为其他格式或系统。在这种情况下,使用转...
    99+
    2024-03-12
    高效工具比较 快速分析
  • Java+GeoTools(开源的Java GIS工具包)快速入门-实现读取shp文件并显示
    场景 GeoTools GeoTools 是一个开源的 Java GIS 工具包,可利用它来开发符合标准的地理信息系统。 GeoTools 提供了 OGC (Open Geospatial Consortium) 规范的一个实现来作为他们的...
    99+
    2023-09-10
    java 开源 开发语言
  • 新一代数据集成工具ETLCloud入门实践:实现MySQL到ClickHouse的快速迁移
    背景 大数据(BigData)最重要的是数据,没有数据其他的就无从谈起(如今GPT大热,也是得益于海量数据的采集、存储、计算及治理能力的提升)。大数据项目开发的首要任务就是采集海量数据,这就要求我们具备海量数据采集的能力。 在实际工作中,数...
    99+
    2023-08-18
    MySQL ClickHouse ETLCloud 数据集成工具 可视化数据集成
  • Vue更高效的构建工具Vite怎么使用
    今天小编给大家分享一下Vue更高效的构建工具Vite怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。webpack我们...
    99+
    2023-07-05
  • 如何使用低代码开发工具构建高效的移动应用
    随着移动应用市场的不断扩大,企业对移动应用的需求也越来越高。然而,开发一款高质量的移动应用需要大量的时间和资源,对于许多企业来说,这是一个巨大的挑战。这时候,低代码开发工具就应运而生了。低代码开发工具可以帮助企业以更低的成本、更快的速度开发...
    99+
    2023-12-17
    高效 如何使用 开发工具
  • 使用 Go 语言构建高效的图像处理工具
    本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《使用 Go 语言构建高效的图像处理工具》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~随着数字媒体技术的...
    99+
    2024-04-05
  • 构建现代应用:Java中的热门架构概览
    文章目录 1. 三层架构2. Spring框架3. 微服务架构4. Java EE(Enterprise Edition)5. 响应式架构6. 大数据架构7. 领域驱动设计(Domain-Dr...
    99+
    2023-09-04
    java 架构 开发语言
  • 如何使用Java快速创建和维护高效的索引数据结构?
    在现代软件开发中,数据结构是非常重要的一部分。一个好的数据结构可以使得程序在处理大量数据时更加高效,而索引数据结构则是其中的一种。在本文中,我们将会介绍如何使用Java快速创建和维护高效的索引数据结构。 一、什么是索引数据结构? 索引数据...
    99+
    2023-09-23
    索引 npm leetcode
  • HTML框架:构建现代网站的必备工具
    好处: 节省时间:框架通过提供现成的组件和模版来简化开发过程,从而节省了大量的时间。 改善一致性:框架强制执行一致的设计和编码标准,从而确保整个网站的美观和易用性。 响应式设计:大多数框架都提供响应式支持,这意味着网站可以在各种设备上无...
    99+
    2024-04-02
  • 索引、HTTP和NPM:如何用PHP构建快速、高效的Web应用?
    PHP是一种流行的编程语言,广泛用于Web开发。它具有简单易学、开发速度快、可扩展性强等特点,使得它成为了Web开发人员的首选语言之一。本文将介绍如何利用PHP构建快速、高效的Web应用,主要从索引、HTTP和NPM三个方面进行阐述。 一...
    99+
    2023-08-07
    索引 http npm
  • Java中如何快速构建项目脚手架的实现
    目录1 前言2 微服务项目准备3 脚手架构建3.1 项目正常启动 && 测试用例正常3.2 在项目的根pom中加入以下maven插件配置3.3 执行archetype...
    99+
    2024-04-02
  • 数据库设计工具的艺术与科学:构建高效数据库
    科学基础 实体关系模型 (ERM):用于描述现实世界的实体、属性和关系。 归一化:消除冗余并确保数据一致性。 索引:加快数据检索速度。 关系代数:用于操作和转换数据库中的数据。 艺术元素 用户需求分析:了解用户的目标和期望。 业务规...
    99+
    2024-03-13
    数据库设计工具
  • Java Spring 索引教程:如何快速建立高效的搜索功能?
    随着现代互联网的发展,搜索引擎已经成为了我们日常生活中必不可少的一部分。对于许多网站和应用程序来说,搜索功能已经成为了它们的核心功能之一。在本文中,我们将介绍如何使用 Java Spring 框架来建立高效的搜索功能。 一、什么是搜索引擎...
    99+
    2023-07-01
    spring 索引 教程
  • 开源低代码Java构建高效、灵活的软件应用
    开源低代码Java是一种新兴的软件开发方式,它将开源和低代码的概念结合在一起,旨在提高软件开发的效率和灵活性。本文将详细介绍开源低代码Java的概念、优势以及如何使用。 一、概念开源低代码Java是一种软件开发方法,它使用开源的Java语言...
    99+
    2023-12-10
    高效 开源 灵活
  • 深入探索Golang中的Facade设计模式:提升代码结构的有效工具
    Golang(Go语言)中的Facade设计模式探索:优化代码结构的利器摘要:Golang是一种简洁高效的编程语言,以其强大的并发性能而闻名。在开发过程中,一个良好的代码结构是保证项目可维护性和可扩展性的重要因素。Facade设计模式是一种...
    99+
    2023-12-20
    Golang Facade设计模式 代码结构优化
  • 如何在 Python 中使用 npm 工具包来构建高效的大数据索引?
    在大数据时代,数据量越来越大,如何对这些数据进行高效的索引和查询成为了一个重要的问题。而 Python 和 npm 工具包则是两个非常强大的工具,它们可以帮助我们构建高效的大数据索引,从而实现快速的数据查询和分析。 本文将介绍如何在 Py...
    99+
    2023-08-23
    大数据 索引 npm
  • 自学前端建立知识体系,是最简单入门以及工作后快速进阶的有效方法
    「自学」是不可能太「系统」的,因为没有人帮你把每一个阶段的学习内容定义清晰。由于缺乏别人提供的反馈,你没办法知道自己某一阶段的学习是否完成了。从事前端多年,根据经验一般的建议方式是,你去实体书店看看相关的书籍,那本顺眼就从哪本学起,没必要太...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作