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

embedded/2024/10/3 19:03:01/

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.ppmy.cn/embedded/41371.html

相关文章

Token 计费与计算、tiktoken介绍

Token怎么计算的&#xff1f; 每个模型都具有不同的功能和价格。价格是按照每1000个 Token 计算的。您可以将Token视为单词的组成部分&#xff0c;其中1000个Token 大约相当于750个单词。(这段文字包含35个Token) 可以看到35个颜色块 每个块都有ID 英文、中文 都会有单独的一个…

Python爬取小说

爬取小说大致分三步 1.获取网页 2.分析获取内容 3.保存到文本 具体步骤放代码里了&#xff0c;注释很清晰了。 # 爬取小说#requests是一个常用的 HTTP 请求库&#xff0c;可以方便地向网站发送 HTTP 请求&#xff0c;并获取响应结果。 #pip install requests #lxml是pytho…

Infuse for Mac激活版:高清影音播放软件

对于热爱影音娱乐的Mac用户来说&#xff0c;Infuse for Mac是一个不容错过的选择。它以其简洁的操作界面和强大的播放功能&#xff0c;为用户带来了全新的影音播放体验。 Infuse for Mac支持广泛的音视频格式&#xff0c;无需额外转换&#xff0c;即可轻松播放您喜爱的影片。无…

彩虹聚合DNS管理系统

聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析&#xff0c;目前已支持的域名平台有&#xff1a;阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户&#xff0c;每个用户可分配不同的域名解析权限&#xff1b;支持API接口&#xff0c;支持获取域名…

Java入门之数据类型和变量

1.字面常量 字面常量就是在程序运行中&#xff0c;固定不变的量&#xff0c;例如如下的代码 public class Demo{public static void main(String[] args){System.Out.println("hello world!");System.Out.println(100);System.Out.println(3.14);System.Out.println…

嵌入式学习-通用定时器

简介 框图介绍 时钟选择 计数器部分 输入捕获和输出比较框图 嵌入式学习全文参考&#xff08;小向是个der&#xff09;做笔记&#xff1a;https://blog.csdn.net/qq_41954556/article/details/129735708

LVS 负载均衡部署 NAT模式

一、环境准备 配置环境&#xff1a; 负载调度器&#xff1a;配置双网卡 内网&#xff1a;172.168.1.11(ens33) 外网卡&#xff1a;12.0.0.1(ens37)二台WEB服务器集群池&#xff1a;172.168.1.12、172.168.1.13 一台NFS共享服务器&#xff1a;172.168.1.14客户端&#xff…

OpenAI推出新模型GPT-4o:可实时交互,检测人的情绪,支持多模态输出

GPT-4o作为OpenAI新发布的人工智能模型&#xff0c;据官方及媒体报道&#xff0c;是面向全球用户发布的&#xff0c;包括中国在内的用户理论上应该能够通过相应平台和应用访问。不过&#xff0c;实际可用性还需考虑地区政策、网络访问限制以及具体平台是否在中国有本地化服务等…