Spring 项目里内建 Gradle 插件-ApiHug准备-工具篇-008

2024-04-12 09:12

本文主要是介绍Spring 项目里内建 Gradle 插件-ApiHug准备-工具篇-008,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  🤗 ApiHug × {Postman|Swagger|Api...} = 快↑ 准√ 省↓

  1. GitHub - apihug/apihug.com: All abou the Apihug   
  2. apihug.com: 有爱,有温度,有质量,有信任
  3. ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace

ApiHug 整个工具链基于 Gradle, 使用 ApiHug 准备工作最先需要学习的就是 gradle. 工欲善其事,必先利其器

ApiHug 核心工具栏  wire + stub 也是 利用 gradle 插件, 给大家提供丝绸般丝滑体验。 

概要

pugin文档源码备注
org.springframework.boot2.7.0DOCopen in new window源码open in new window
io.spring.dependency-management1.0.11.REALEASEDOCopen in new window源码open in new window

Spring 有上面两个在公共库的插件, 一个Gradle插件的开发、发布是个比较冗长的过程,那如果我们在插件的代码编写阶段,总不能修改一点点代码,就发布一个版本,然后重新运用吧?

有人可能会说,那就不发布到maven仓库,而是发布到本地仓库呗,然而这样至多发布时节省一点点时间,仍然太麻烦。

内置

幸好有 buildSrc! 在buildSrc中定义的插件,可以直接在其他module中运用,可以参考spring, spring-boot 中的buildSrcopen in new window逻辑,所有在项目中使用的 org.springframework.boot* 开头插件都是以这样方式提供的。


gradlePlugin {plugins {bomPlugin {id = "org.springframework.boot.bom"implementationClass = "org.springframework.boot.build.bom.BomPlugin"}
}

独立

引用和使用任何第三方插件一样:


plugins {id "org.springframework.boot.bom"id "org.springframework.boot.conventions"id "org.springframework.boot.deployed"
}

即直接apply具体的类,而不是其发布名称,这样的话,不管做什么修改,都能马上体现,而不需要等到重新发布版本。

spring boot 大概提供了10几个代码里面内带的 plugin spring 只扩展了三个: org.springframework.build.api-difforg.springframework.build.compileorg.springframework.build.optional-dependencies

分析个 org.springframework.build.optional.OptionalDependenciesPlugin

spring-boot > OptionalDependenciesPluginopen in new window

spring-framework > OptionalDependenciesPluginopen in new window

两个实现的方式基本一样的 optional


public class OptionalDependenciesPlugin implements Plugin<Project> {/*** Name of the {@code optional} configuration.*/public static final String OPTIONAL_CONFIGURATION_NAME = "optional";@Overridepublic void apply(Project project) {Configuration optional = project.getConfigurations().create("optional");optional.setCanBeConsumed(false);optional.setCanBeResolved(false);project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> {SourceSetContainer sourceSets = project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets();sourceSets.all((sourceSet) -> {project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()).extendsFrom(optional);project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName()).extendsFrom(optional);});});}}

optional 作为 compileOnly 一个替代, 在 compile 和 runtime classpath 里面但是不会增加到 依赖里面。 但是 compileOnly 其实会导致测试的 classpath 无法满足, 所以你会看到比较笨的解决方案:

dependencies {compileOnly "org.slf4j:slf4j-api"testImplementation "org.slf4j:slf4j-api"
}

我们

api-hug-contact

这篇关于Spring 项目里内建 Gradle 插件-ApiHug准备-工具篇-008的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896710

相关文章

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做