Gradle基础学习(七) 认识插件

Gradle构建在一个插件系统上,本身主要由基础设施组成,比如有一个先进的依赖解析引擎,而其他功能则来自插件。

插件是提供额外功能给Gradle构建系统的软件组件。

插件可以被应用到Gradle构建脚本中,以添加新的任务、配置或其他与构建相关的功能:

The Java Library Plugin - java-library

这个插件用来定义和构建Java库。当您在一个Java项目中应用此插件时,它会自动添加几个任务到项目中,比如负责编译Java源代码的compileJava任务,生成Javadoc文档的javadoc任务,以及负责将编译后的类打包到JAR文件中的jar任务。

The Google Services Gradle Plugin - com.google.gms:google-services

这个插件用于在Android项目中启用Google APIs和Firebase服务。当您在一个Android项目中应用此插件时,它会添加一个名为googleServices{}的配置块,用于配置Google服务和Firebase服务的属性。此外,它还会添加一个名为generateReleaseAssets的任务,该任务在生成发布版本的构建时自动运行,并生成必要的服务配置文件。

Gradle Bintray Plugin - com.jfrog.bintray

这个插件允许您将构建生成的制品(如JAR文件、AAR文件等)发布到JFrog的Bintray服务上。通过配置bintray{}块,您可以指定发布到Bintray所需的所有参数,如项目名称、版本、发布信息等。

Plugin distribution(插件分发) 

是指插件如何被提供和分享给使用Gradle的构建系统。主要有三种方式:

1.Core Plugins(核心插件):

这些插件是由Gradle团队开发和维护的。

它们通常是Gradle发行版本的一部分,因此不需要额外安装或配置。

核心插件提供了Gradle构建系统的基础功能和特性。

2.Community Plugins(社区插件):

这些插件是由Gradle社区开发和维护的。

社区插件通过Gradle Plugin PortalGradle插件门户)进行分发。Gradle插件门户是一个集中存储和分享插件的平台,允许用户查找、下载和使用由社区贡献的插件。

社区插件提供了额外的功能和特性,这些功能可能不是Gradle核心插件所包含的,但对于某些项目来说可能是必需的。

3.Local Plugins(本地插件):

本地插件允许用户根据自己的需求创建自定义插件。

用户可以使用Gradle提供的APIs来创建本地插件,以满足项目的特定需求或填补功能上的空缺。

这些插件通常位于项目的本地目录结构中,并在项目的构建脚本中被使用。

应用插件 

将插件应用于项目允许插件扩展项目的功能。

我们通过在构建脚本build.gradle(.kts)中使用插件 id(一个全局唯一标识符/名称)和版本号来应用插件:

plugins {

    id «plugin id» version «plugin version»

}

1.核心插件 

Gradle的核心插件是Gradle本身自带的一组插件,它们为构建和管理项目提供了基本功能。

下面是核心插件中包含的部分插件:

java:支持构建Java项目。

java-library:支持构建Java库。

groovy:支持构建Groovy项目。

ear:支持构建和打包Java EE应用程序。

在构建脚本中应用核心插件时,可以仅使用它们的简短id名称,例如java就代表是核心JavaPlugin,并且也不需要指定版本号。

比如应用java插件:

//build.gradle.kts

plugins {

    id("java")

}

2.社区插件 

比如应用org.springframework.boot插件: 

//build.gradle.kts

plugins {

    id("org.springframework.boot") version "3.1.5"

}

3.本地插件 

开发者可以使用Gradle提供的API来开发自定义插件,通常会遵循以下步骤:

1.定义插件类 : 创建一个实现Plugin<Project>接口的新类

// Define a 'HelloPlugin' plugin
class HelloPlugin : Plugin<Project> {override fun apply(project: Project) {// Define the 'hello' taskval helloTask = project.tasks.register("hello") {doLast {println("Hello, Gradle!")}}}
}

2.构建和可选的发布插件:生成包含插件代码的JAR文件, 可选地将JAR发布到仓库(本地或远程),以便在其他项目上使用。

// Publish the plugin

plugins {

    id("maven-publish")

}

publishing {

    publications {

        create<MavenPublication>("mavenJava") {

            from(components["java"])

        }

    }

    repositories {

        mavenLocal()

    }

}

3.应用自定义的插件:需要包含插件ID和版本号

// Apply the plugin

plugins {

    id("com.example.hello") version "1.0"

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第八篇:深入探索操作系统架构:从基础到前沿

深入探索操作系统架构&#xff1a;从基础到前沿 1 引言 在当今这个高速发展的数字时代&#xff0c;操作系统无疑是计算机科学领域的基石之一。它不仅是计算机硬件与最终用户之间的桥梁&#xff0c;更是实现高效计算和资源管理的关键。操作系统的架构&#xff0c;即其内部结构和…

51单片机入门:蜂鸣器

蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件&#xff0c;常用来产生设备的按键音、报警音等提示信号。 蜂鸣器的种类 1、从结构上&#xff1a;压电式蜂鸣器和电磁式蜂鸣器。 压电式蜂鸣器&#xff1a;通过压电陶瓷的压电效应原理工作的。当加有交变电压时&#xf…

企业微信主体能不能修改?

企业微信变更主体有什么作用&#xff1f;当我们的企业因为各种原因需要注销或已经注销&#xff0c;或者运营变更等情况&#xff0c;企业微信无法继续使用原主体继续使用时&#xff0c;可以申请企业主体变更&#xff0c;变更为新的主体。企业微信变更主体的条件有哪些&#xff1…

代码随想录算法训练营第36期DAY20

DAY20 110平衡二叉树 自己写的迭代法和递归都有问题&#xff0c;应该从&#xff1a;传入节点的树是否为平衡二叉树来考虑&#xff08;大部分时候是subtree。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tre…

C 深入指针(2)

目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#…

CSS Web服务器、2D、动画和3D转换

Web服务器 我们自己写的网站只能自己访问浏览&#xff0c;但是如果想让其他人也浏览&#xff0c;可以将它放到服务器上。 什么是Web服务器 服务器(我们也会称之为主机)是提供计算服务的设备&#xff0c;它也是一台计算机。在网络环境下&#xff0c;根据服务器提供的服务类型不…

初识C语言——第十三天

关键字2&#xff1a; static 修饰局部变量&#xff0c;改变了局部变量的生命周期&#xff08;本质上是改变了变量的存储类型&#xff09; static修饰全局变量&#xff0c;使得这个全局变量只能在自己所在的源文件&#xff08;.c)内部可以使用&#xff0c;其他源文件不能使用 …

【Kafka每日一问】Kafka分区分配策略有哪些?

Kafka分区分配策略有哪些 Range分配策略&#xff08;Range&#xff09;&#xff1a; 这是默认的分配策略。在这种策略下&#xff0c;每个消费者负责订阅主题的连续范围内的分区。例如&#xff0c;如果有两个消费者和一个主题有12个分区&#xff0c;那么第一个消费者将负责分区0…

嵌入式交叉编译:x264

下载 Index of /x264/snapshots/ 解压编译 BUILD_DIR${HOME}/build_libsCROSS_NAMEaarch64-mix210-linuxmake clean./configure \--prefix${BUILD_DIR} \--cross-prefix${CROSS_NAME}- \--hostaarch64-linux-gnu \--enable-sharedmake -j16make install 检查 file ${BUILD…

Partisia Blockchain 生态zk跨链DEX上线,加密资产将无缝转移

在 5 月 1 日&#xff0c;由 Partisia Blockchain 与 zkCross 创建合作推出的 Partisia zkCrossDEX 在 Partisia Blockchain 生态正式上线。Partisia zkCrossDEX 是 Partisia Blockchain 上重要的互操作枢纽&#xff0c;其融合了 zkCross 的 zk 技术跨链互操作方案&#xff0c;…

Linux基础知识(升级版)

Linux基础知识&#xff08;常用命令史上最全版&#xff09; 前言 至于为什么重新写Linux笔记&#xff0c;之前作为Java攻城狮&#xff0c;学的太片面&#xff0c;重新整理以前的笔记&#xff0c;打造更好的&#xff0c;学习更高深的技术&#xff0c;挣更多的money常见目录 目…

《华为鸿蒙:从备胎到主角的崛起之路》

华为鸿蒙操作系统的发展历程可以追溯到 2012 年&#xff0c;当时华为开始规划自有操作系统鸿蒙 OS。然而&#xff0c;直到 2019 年 5 月&#xff0c;鸿蒙才正式进入开发阶段。 2019 年 8 月 9 日&#xff0c;华为正式发布了鸿蒙操作系统。 鸿蒙系统的首个版本是于 2019 年推出…

linux上Redis安装使用

环境centOS8 redis是缓存数据库&#xff0c;主要是用于在内存中存储数据&#xff0c;内存的读写很快&#xff0c;加快系统读写数据库的速度 一、Linux 安装 Redis 1. 下载Redis 官网下载Downloads - Redis 历史版本Index of /releases/ 本文中安装的版本为&#xff1a;h…

小红书图片文案编辑生成图文工具

在小红书上&#xff0c;种草图文的变现通常涉及以下几个步骤&#xff1a; 1. **建立影响力**&#xff1a;首先&#xff0c;你需要通过持续发布高质量的内容&#xff0c;积累粉丝和影响力。你的内容应该围绕特定的领域或主题&#xff0c;比如时尚、美妆、美食或旅行&#xff0c…

KUKA机器人KR3 R540维护保养——涂润滑脂

KUKA机器人在保养时少不了润滑脂&#xff0c;不同型号的机器人需要的润滑脂类型也不一样&#xff0c;保养时注意选用合适的润滑脂。本篇文章以KUKA机器人KR3 R540为例&#xff0c;在轴盖板 A2、A3、A5 的内侧涂上润滑脂。 一、涂润滑脂的作用 拆开机器人一个轴的盖板&am…

Docker私有仓库与Harbor部署使用

目录 一、本地私有仓库 1. 下载registry镜像 2. 在daemon.json文件中添加私有镜像仓库地址 ​编辑 3. 运行registry容器 4. Docker容器的重启策略如下 5. 为镜像打标签 6. 上传到私有仓库 7. 列出私有仓库的所有镜像 8. 列出私有仓库的centos镜像有哪些tag 9. 先删…

64位的IP地址设想

现有的IP地址 IPv4有32位&#xff0c;不够用了。 IPv6有128位&#xff0c;相当多。 实际上&#xff0c;23385亿&#xff0c;只要在IPv4的基础上&#xff0c;加1比特就够用了&#xff0c;IPv6有些太长了。 64位的IP地址 这是个设想。 64位分成七段&#xff0c;8888881664&…

近50亿元国资助阵,全球最大量子独角兽登场!

4月30日&#xff0c;澳大利亚与PsiQuantum公司宣布签订一项近10亿澳元&#xff08;约6.2亿美元、47.24亿人民币&#xff09;的协议&#xff0c;旨在建造世界上第一台商业上“有用”的量子计算机。 仅在一天前&#xff0c;澳大利亚还投资了1840万澳元&#xff0c;在悉尼大学成立…

基于springboot+vue+Mysql的点餐平台网站

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

攻防世界-xff-referer

题目信息 分析过程 显示ip必须为123.123.123.123&#xff0c;则进行伪造 解题过程 打开repeator 提示必须来自https://www.google.com&#xff0c;则再次构造Referer 相关知识 x-forwarded-for 和 referer的区别: x-forwarded-for 用来证明ip的像是“127.0.0.1”这种&a…