Gradle 在 Spring 中的使用ApiHug准备-工具篇-006

news/2024/5/3 0:50:07/文章来源:https://blog.csdn.net/AK15221736052/article/details/137579238

  🤗 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. 工欲善其事,必先利其器

参考: BOM 版本open in new window + 版本字段open in new window 。

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

#init


gradle init

org.springframework.bootopen in new window 主要是各种Job gradle tasks 里面 boot 开头的job 都是:

  1. 打包成可执行jar、war
  2. 引入以来管理 spring-boot-dependencies 也就是: BOM_COORDINATES

public static final String BOM_COORDINATES = "org.springframework.boot:spring-boot-dependencies:"+ SPRING_BOOT_VERSION;

gradle tasksApplication tasks
-----------------
bootRun - Runs this project as a Spring Boot application.Build tasks
-----------
bootBuildImage - Builds an OCI image of the application using the output of the bootJar task
bootJar - Assembles an executable jar archive containing the main classes and their dependencies.
bootJarMainClassName - Resolves the name of the application's main class for the bootJar task.
bootRunMainClassName - Resolves the name of the application's main class for the bootRun task.

io.spring.dependency-managementopen in new window, 主要是依赖控制: A Gradle plugin that provides Maven-like dependency management and exclusions, 提供和maven 里面 pom 类似操作。

这两个插件一般是组合使用, dependency-management 依赖 boot 的 pom 版本。


plugins {id 'org.springframework.boot' version '2.7.0'id 'io.spring.dependency-management' version '1.0.11.RELEASE'id 'java'
}

BOM 版本open in new window + 版本字段open in new window 。 两个plugin 有什么关系?

当 io.spring.dependency-management 插件被加入的时候, Spring Boot 插件将自动导入 spring-boot-dependencies bom,也就是避免导入starter 时候设置版本号(pom 的本质和好处)。

相当于自动导入了:

dependencyManagement {imports {mavenBom "org.springframework.boot:spring-boot-dependencies:${SPRING_BOOT_VERSION}"}
}

spring.boot 插件是避免带入版本号, 如果你只想使用 spring.boot 的版本依赖, 但是不想引用 spring.boot 的定制的一些task 比如 boot jar(比如定制spring starter); 有两种方式。

#第0种

plugins {id 'org.springframework.boot' version '2.7.0'id 'io.spring.dependency-management' version '1.0.11.RELEASE'id 'java'
}ext {set('springCloudVersion', "2021.0.3")set('testcontainersVersion', "1.17.2")
}dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.cloud:spring-cloud-starter-config'testImplementation 'org.springframework.boot:spring-boot-starter-test'testImplementation 'org.testcontainers:junit-jupiter'
}dependencyManagement {imports {//不需要显式的导入 boot-dependencies mavenBom "org.testcontainers:testcontainers-bom:${testcontainersVersion}"mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"}
}

#第一种

plugins {id 'java'id("org.springframework.boot") version "2.7.0" apply falseid("io.spring.dependency-management") version "1.0.11.RELEASE"
}dependencyManagement {imports {mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)}
}

apply false 表示不带task过来, 那么下面 SpringBootPlugin.BOM_COORDINATES 同样带来 导入 boot bom 效果:


public static final String BOM_COORDINATES = "org.springframework.boot:spring-boot-dependencies:"+ SPRING_BOOT_VERSION;

默认引入了tasks:

gradle tasksApplication tasks
-----------------
bootRun - Runs this project as a Spring Boot application.Build tasks
-----------
bootBuildImage - Builds an OCI image of the application using the output of the bootJar task
bootJar - Assembles an executable jar archive containing the main classes and their dependencies.
bootJarMainClassName - Resolves the name of the application's main class for the bootJar task.
bootRunMainClassName - Resolves the name of the application's main class for the bootRun task.

一旦 apply false, bootRun 开头的所有任务就没有了!

#第二种

用 gradle 原生的 platform 功能

plugins {id 'java'id("org.springframework.boot") version "2.7.0" apply false
}dependencies {implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
}

#两种方式差别

用 spring 的 dependency 或者 gradle platform 有什么差别?

#Spring Depedencies Management Plugin

Spring depedency management 提供了编辑通道:


ext['slf4j.version'] = '1.7.20'
#Gradle Platform

纯 gradle 方式:


configurations.all {resolutionStrategy.eachDependency { DependencyResolveDetails details ->if (details.requested.group == 'org.slf4j') {details.useVersion '1.7.20'}}
}

org.springframework.boot 和 boot 一致, io.spring.dependency-management 一般配合使用, dependency-management 会使用 boot 的版本。

#参考项目

  1. 统一版本管理 Sharing dependency versions between projectsopen in new window
  2. The Java Platform Pluginopen in new window
  3. spring boot pluginopen in new window
  4. spring depedency managementopen in new window
  5. spring framework testopen in new window
  6. java gradle template

api-hug-contact

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

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

相关文章

Redis Cluster集群模式

目录 一、理论 1.1 概念 1.2 集群的作用 1.3 redis集群的数据分片 1.4 Redis集群的主从复制模型 二、实践 2.1 Redis集群模式的搭建 2.1.1 cluster集群前期工作 2.1.2 开启群集功能 2.1.3 启动redis节点 2.1.4 启动集群 2.2 测试集群 总结 一、理论 1.1 概念 集群&a…

vulhub之Webmin篇

Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。Webmin支持绝大多数的Unix系统,这些系统除了各种版本的linux以外还包括:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 影响版本&…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况: ①OOM:内存溢出,是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出&#xff0c…

自己动手封装axios通用方法并上传至私有npm仓库:详细步骤与实现指南

文章目录 一、构建方法1、api/request.js2、api/requestHandler.js3、api/index.js 二、测试方法1、api/axios.js2、main.js3、app.vue4、vue.config.js5、index.html 三、打包1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和…

基于FPGA的DDR相关知识导航界面

个人觉得想要真正理解DDR,那就要从SDRAM入手,SDRAM读写控制器也可以作为入门FPGA的一个判断标准,说实话I2C、UART、SPI这些接口难度太低了,会写这些接口说明不了什么。 很常见的问题,现在DDR3、SDRAM、DDR4官方都有IP&…

数据结构——二叉树链式结构的实现

大家好我是小锋,今天我们来学习的是二叉树链式结构的实现 首先我们来学习一下二叉树的基本操作 在看二叉树基本操作前我们来回顾下二叉树的概念, 二叉树是: 1. 空树 2. 非空:根节点,根节点的左子树、根节点的右…

【THM】Exploit Vulnerabilities(利用漏洞)-

介绍 在这个房间里,我们将讨论一些识别漏洞的方法,并结合我们的研究技能来了解这些漏洞是如何被滥用的。 此外,您还会发现一些公开可用的资源,这些资源是您在执行漏洞研究和利用时的技能和工具的重要补充。然后,您将在房间的最后将所有这些应用到实际挑战中。 自动化与…

如何监控容器或K8s中的OpenSearch

概述 当前 OpenSearch 使用的越来越多, 但是 OpenSearch 生态还不尽完善. 针对如下情况: 监控容器化或运行在 K8s 中的 OpenSearch 我查了下, 官方还没有提供完备的方案. 这里如何监控 K8s 中的 OpenSearch, 包括安装 exporter 插件、采集、展示全环节。 OpenSearch 简介…

红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程

HTTP版RTU(支持GNSS)项目概述 RTU(Remote Terminal Unit),中文即远程终端控制系统,负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置,通常由信号输入/出模块、微…

蓝桥杯-单片机基础16——利用定时计数中断进行动态数码管的多窗口显示

综合查阅了网络上目前能找到的所有关于此技能的代码,最终找到了下述方式比较可靠,且可以自定义任意显示的数值。 传统采用延时函数的方式实现动态数码管扫描,在题目变复杂时效果总是会不佳,因此在省赛中有必要尝试采用定时计数器中…

洪水预警:如何通过数据可视化提前应对灾害

数据可视化在应对洪涝灾害问题中发挥着重要作用。洪涝灾害是一种常见而严重的自然灾害,给人们的生命、财产和生活带来了巨大的威胁和损失。而数据可视化技术通过将海量的数据转化为直观、易懂的图表、图像或地图等形式,帮助人们更好地理解洪涝灾害的发生…

微服务-2 Eureka

Eureka 启动页面: 同理再注册完order-service后,刷新启动页面: userservice 启动多台服务: [ 代码 ]:orderService.java(用 RestTemplate 调其他服务,用 userservice 代替 localhost:8081&…

视频图像的两种表示方式YUV与RGB(4)

本篇主要讲YUV与RGB之间的转换,包括YUV444 颜色编码格式 转为 RGB 格式 ,RGB颜色编码格式转为 YUV444 格式。 一、 YUV与RGB之间的转换 YUV与RGB颜色格式之间进行转换时 , 涉及一系列的数学运算 ; YUV 颜色编码格式转为RGB格式的转换公式 取决于 于 YUV …

数据结构——线性表(顺序存储结构)

语言:C语言软件:Visual Studio 2022笔记书籍:数据结构——用C语言描述如有错误,感谢指正。若有侵权请联系博主 一、线性表的逻辑结构 线性表是n个类型相同的数据元素的有限序列,对n>0,除第一元素无直接…

电能质量问题有几类?再怎样进行谐波治理

一、为什么要进行电能质量的治理 电能质量是指电力系统中电能的质量。理想的电能应该是完美对称的正弦波。一些因素会使波形偏离对称正弦,由此便产生了电能质量问题。一方面我们研究存在哪些影响因素会导致电能质量问题,一方面我们研究这些因素会导致哪…

如何用electron(vue)搜索电脑本地wifi

对于搜索本地 WiFi 网络,可以使用 Electron 结合 Node.js 来编写一个简单的应用程序。 以下是一个基本的示例,它使用 Node.js 的 wifi 模块来搜索并列出附近的 WiFi 网络: 首先,确保你已经安装了 Node.js 和 Electron。 然后&am…

linux 搭建Samba服务

Samba简介 SAMBA是⼀个实现不同操作系统之间⽂件共享和打印机共享的⼀种SMB协议的免费软件, SMB(Server Message block)协议是window下所使⽤的⽂件共享协议,我们在linux系统或 者其类unix系统当中可以通过samba服务来实现SMB功能。 (1&…

【SpringBoot】-- mapstruct进行类型转换时Converter实现类不能自动生成代码问题解决

问题描述 我的问题如下&#xff1a; 应该在红色区域生成对应的转换细节&#xff0c;但是这里只返回了一个空对象 问题解决 加入lombok-mapstruct-binding依赖,也要注意依赖引用顺序问题 <dependency><groupId>org.projectlombok</groupId><artifactId&…

chrome google浏览器添加插件扩展失败怎么办,无法从该网站添加应用、扩展程序和用户脚本确定,

无法从该网站添加应用、扩展程序和用户脚本确定 chrome google浏览器添加插件扩展失败怎么办&#xff0c;无法从该网站添加应用、扩展程序和用户脚本确定&#xff0c; 需要打开调试模式 chrome://extensions/

NzN的数据结构--选择排序

接上文&#xff0c;本章我们来介绍选择排序。先三连后看才是好习惯~~~ 目录 一、基本思想 二、直接选择排序 三、堆排序 一、基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待…