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.hqwc.cn/news/671957.html

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

相关文章

在Codelab对llama3做Lora Fine tune微调

Unsloth 高效微调大模型的工具&#xff0c;通过Unsloth微调Llama3, Mistral, Gemma 速度提升2-5倍&#xff0c;内存减少70%&#xff01; Codelab 创建一个jupyter notebook 选择 T4 GPU 安装Fine tune 相关的lib %%capture import torch major_version, minor_version torch…

一起深度学习(AlexNet网络)

AlexNet神经网络 代码实现&#xff1a; 代码实现&#xff1a; import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 采用了11*11的卷积核来捕捉对象&#xff0c;因为原始输入数据比较大#步幅为4 &#xff0c;可减少输出的高度核宽度。#输出通…

SeetaFace6人脸检测C++代码实现Demo

SeetaFace6包含人脸识别的基本能力&#xff1a;人脸检测、关键点定位、人脸识别&#xff0c;同时增加了活体检测、质量评估、年龄性别估计&#xff0c;并且顺应实际应用需求&#xff0c;开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址&#xff1a;https://github.co…

检测服务器环境,实现快速部署。适用于CRMEB_PRO/多店

运行效果如图&#xff1a; 最近被好多人问&#xff0c;本来运行的好好的&#xff0c;突然swoole就启动不了了。 本工具为爱发电&#xff0c;如果工具正好解决了您的需求。我会很开心 代码如下&#xff1a; """本脚本为爱发电by:网前雨刮器 """…

FreeBSD RISCV 在QEME中实践-网络配置

在前一篇文章中&#xff0c;我们一起进行了FreeBSD RISCV 在QEME中实践 现在&#xff0c;让我们配置好网络吧&#xff01; 先上结论&#xff1a;用默认配置启动即可&#xff0c;网络就加载好了&#xff0c;只是不能ping罢了。因为不能ping&#xff0c;以为网络没通&#xff0…

印度人Torque Minimum 方式的改进

1 局限性分析 印度人Torque Minimum 复现 上一篇文章分析了印度人那篇Torque Minimum文章的方法&#xff0c;他的方法存在一些局限性&#xff1b; 1&#xff1a;第一个就是6次转矩脉动的抑制&#xff0c;导致了较大的电流谐波畸变率&#xff1b; 2&#xff1a;第二个就是6次…

【C语言】整数,浮点数数据在内存中的存储

Tiny Spark get dazzling some day. 目录 1. 整数在内存中的存储1.1 原码、反码、补码1.1 大小端存储1.2.1 字节序分类1.2.2 判断字节序 2. 浮点数在内存中的存储2.1 浮点数的存储形式2.2 浮点数的 “ 存 ”2.2.1 S2.2.2 E2.2.3 F 2.3 浮点数的 “ 取 ”2.3.1 S2.3.2 E、F 3. 浮…

爱普生S2D13V52快速实现车载显示屏高分辨率显示系统

随着时代的发展&#xff0c;汽车驾驶位前中央的显示屏承担的功能也越来越多&#xff0c;从一开始仅仅是显示仪表盘的信息&#xff0c;再到作为显示屏辅助倒车&#xff0c;再到如今和一块平板一样可公认娱乐&#xff0c;显示屏的大小有些时候成为了一辆车够不够好的体现。随着汽…

【前端】HTML基础(3)

文章目录 前言一、HTML基础1、表格标签1.1 基本使用1.2 合并单元格 2、列表标签2.1 无序列表2.2 有序列表2.3 自定义列表 3、 表单标签2.1 form标签2.2 input标签2.3 label标签2.4 select标签2.5 textarea标签 4、无语义标签5、HTML特殊字符 前言 这篇博客仅仅是对HTML的基本结…

Apache POI入门学习

Apache POI入门学习 官网地址 excel中使用到的类读取excel表格内容表格内容maven依赖方式一测试结果 方式二测试结果 向excel中写入数据方式一方式二方式三测试结果 从 Excel 工作表中的公式单元格读取数据测试结果 Excel 工作表中写入公式单元格从受密码保护的Excel中读取数据…

2024年03月 Scratch 图形化(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共18题,共50分) 第1题 运行程序后,角色一定不会说出的数字是?( ) A:2 B:4 C:6 D:8 答案:A 程序中随机数的取值最小为 2,最大为 20 ,那么随机数加上 2 之后的结果的最小值为 4 ,最大值为 22 。所…

查看微信小程序主包大小

前言 略 查看微信小程序主包大小 在微信开发者工具右上角找到“详情->基本信息” 查看微信小程序主包构成 通过微信开发者工具中的“代码依赖分析”工具查看