当前位置: 首页 > news >正文

【Maven】开发自己的starter依赖

【Maven】开发自己的starter依赖

文章目录

  • 【Maven】开发自己的starter依赖
    • 1. 准备工作
      • 1.1 创建一个项目
      • 1.2 修改pom文件
      • 1.3 修改项目结构
    • 2. 动手实现
      • 2.1 创建客户端类
      • 2.2 创建配置类
      • 2.3 配置路径
      • 2.4 下载到本地仓库
    • 3. 测试

1. 准备工作

1.1 创建一个项目

打开idea,创建一个springboot项目:

image-20230404214050289

点击next,添加两个依赖:

image-20230404214137849

点击finsh,创建成功。


1.2 修改pom文件

将pom文件中的版本号改为 0.0.1 (非必须操作):

<groupId>com.example</groupId>
<artifactId>test-spring-boot-starter</artifactId>
<!--    <version>0.0.1-SNAPSHOT</version>-->
<version>0.0.1</version>

<build> 标签的内容都删掉:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins>
</build>

因为这是一个我们自定义的一套sdk,并不需要打成jar包。


1.3 修改项目结构

image-20230404214916897

将启动类和测试类都删掉,在resources目录下创建一个目录 META-INF ,在其中创建一个文件 spring.factories

image-20230404215413806


2. 动手实现

2.1 创建客户端类

创建一个包 client,在其中创建一个类 CalculateClient :

@AllArgsConstructor
@NoArgsConstructor
@Slf4j
public class CalculateClient {private String host;private String port;public String select(String id) {log.info("连接成功,地址为:{}", host);log.info("连接成功,端口为:{}", port);//返回查询结果return id;}
}

2.2 创建配置类

创建一个包 config ,在其中创建一个类 CalculateConfig :

@Configuration
@ConfigurationProperties("calculate.client")
@Data
@ComponentScan
public class ClientConfig {private String host;private String port;@Beanpublic CalculateClient calculateClient() {return new CalculateClient(host, port);}
}

2.3 配置路径

在我们刚刚创建的 spring.factories 文件中添加如下内容:

#spring boot starter
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.testspringbootstarter.config.ClientConfig

2.4 下载到本地仓库

点击 install 将项目下载到本地仓库,这样才能够提供给别的项目使用:

image-20230404221700131


3. 测试

在别的项目中引入我们刚刚开发的依赖:

<dependency><groupId>com.example</groupId><artifactId>test-spring-boot-starter</artifactId><version>0.0.1</version>
</dependency>

然后在项目的 application.yml 文件中配置 hostport

image-20230404222303950

然后在测试类中编写一个测试方法:

@Autowired
private CalculateClient calculateClient;@Test
public void test(){String result = calculateClient.select("1");System.out.println(result);
}

运行测试方法,结果如下:

image-20230404222525855

到此,一个简单的 starter 就开发完毕了。

相关文章:

【Maven】开发自己的starter依赖

【Maven】开发自己的starter依赖 文章目录【Maven】开发自己的starter依赖1. 准备工作1.1 创建一个项目1.2 修改pom文件1.3 修改项目结构2. 动手实现2.1 创建客户端类2.2 创建配置类2.3 配置路径2.4 下载到本地仓库3. 测试1. 准备工作 1.1 创建一个项目 打开idea&#xff0c;…...

JVM与Java体系

JVM体系跟着尚硅谷的康师傅学习 JVM内存与垃圾回收概述 除了大部分的Java开发 人员&#xff0c;除了会在项目中使用到与Java平台相关的框架&#xff0c;与API&#xff0c;对于Java的虚拟机了解甚少。但是也需要我们知道如何处理OOM&#xff0c;SOF异常&#xff0c;除了…...

【C++笔试强训】第十二天

选择题 解析&#xff1a;引用&#xff1a;引用是对象的别名&#xff0c;并没有开辟属于自己的空间&#xff0c;两者同用一块内存&#xff0c;引用值改变也会引起引用对象值的改变&#xff1b; 引用在声明的时候必须要初始化&#xff0c;而指针不用&#xff0c;指针可以为空指针…...

C# | 使用DataGridView展示JSON数组

C# | 使用DataGridView展示JSON数组 文章目录C# | 使用DataGridView展示JSON数组前言实现原理实现过程完整源码前言 你想展示一个复杂的JSON数组数据吗&#xff1f;但是你却不知道该如何展示它&#xff0c;是吗&#xff1f;没问题&#xff0c;因为本文就是为解决这个问题而生的…...

Python入门到高级【第四章】

预计更新第一章. Python 简介 Python 简介和历史Python 特点和优势安装 Python 第二章. 变量和数据类型 变量和标识符基本数据类型&#xff1a;数字、字符串、布尔值等字符串操作列表、元组和字典 第三章. 控制语句和函数 分支结构&#xff1a;if/else 语句循环结构&#…...

【ChatGPT】ChatGPT 能否取代程序员?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言: ChatGPT 的优势 自然语言的生成 文本自动生成 建立了更人性化的人机交互 ChatGPT 的局限性 算法的解释能力较差 程序的可实现性较差 缺乏优化和质量控制 程序员相较于 …...

英飞凌Tricore问题排查01_Det/Reset/Trap排查宝典

目录 1.概述2. 排查方法总览(流程图)3. 进Det排查方法4. 进Reset/Trap排查4.1 通过ErrorHook/ProtectionHook排查4.2. 通过BTV寄存器排查Trap方法4.3 借助英飞凌寄存器排查4.3.1 借助Reset状态寄存器4.3.2 SMU触发的复位4.3.3 CPU触发的复位1.概述 大家在软件开发过程中,可…...

第六章 共享模型之 无锁

JUC并发编程系列文章 http://t.csdn.cn/UgzQi 文章目录JUC并发编程系列文章前言一、问题的引出如何保证取款方法的线程安全解决方案一、使用synchronized锁住临界区代码解决方案二、无锁(AtomicInteger 原子整数类)二、CAS 与 volatileAtomicInteger . compareAndSet( ) 方法的…...

2023Q2押题,华为OD机试用Python实现 -【机智的外卖员】

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南华为 od 机试,独家整理 已参加机试人员的实战技巧本篇题解:机智的外卖员 题目…...

【华为OD机试真题】密室逃生游戏(javapython)

密室逃生游戏 题目 小强增在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码 K(升序的不重复小写字母组 成) 的箱子, 并给出箱子编号,箱子编号为 1~N 。 每个箱子中都有一个 字符串 s ,字符串由大写字母、小写字母、数字、标点符号、空格组成, 需要在这些字符串中…...

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作

一.商品分类的增、删、改、查,以及商品分类的自关联1.界面展示以及操作说明列表商品分类列表展示说明:(1).增加商品分类按钮(2).商品分类,以及子分类相关数据列表展示(3).排序,状态,修改,删除操作处理 新增编辑删除修改状态,排序2.创建商品分类模型在controllers/admin下创建Go…...

Redis安装-使用包管理安装Redis

这种在Linux上使用apt-get包管理器安装Redis的方式称为“包管理安装”。这种安装方式使用操作系统的官方软件库来获取和安装软件包&#xff0c;可以自动处理软件包的依赖关系&#xff0c;并确保软件包与系统其他部分兼容。这是一种安全、可靠且方便的安装方式&#xff0c;适用于…...

HTML属性的概念和使用

通过前面的学习&#xff0c;我们已经对 HTML标签 有了简单的认识&#xff0c;知道可以在标签中可以添加一些属性&#xff0c;这些属性包含了标签的额外信息&#xff0c;例如&#xff1a; href 属性可以为 <a> 标签提供链接地址&#xff1b;src 属性可以为 <img> 标…...

ChatGPT基础知识系列之一文说透ChatGPT

ChatGPT基础知识系列之一文说透ChatGPT OpenAI近期发布聊天机器人模型ChatGPT,迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质量的回答、上瘾式的交互体验,圈内外都纷纷惊呼。 …...

‘go install‘ requires a version when current directory is not in a module

背景 安装好环境之后&#xff0c;跑个helloworld看看 目录结构 workspacepathsrchellohelloworld.go代码&#xff1a; package mainimport "fmt"func main() { fmt.Println("Hello World") }1.使用 go run 命令 - 在命令提示符旁&#xff0c;输入 go …...

蓝桥杯嵌入式第十三届(第二套客观题)

文章目录 前言一、题目1二、题目2三、题目3四、题目4五、题目5六、题目6七、题目7八、题目8九、题目9十、题目10总结前言 本篇文章继续讲解客观题。 一、题目1 这个其实属于送分题,了解嵌入式或者以后想要入行嵌入式的同学应该都对嵌入式特点有所了解。 A. 采用专用微控制…...

FFmpeg进阶:各种输入输出设备

文章目录查看设备列表输入设备介绍输出设备介绍查看设备列表 我们可以通过ffmpeg自带的工具查看系统支持的设备列表信息, 对应的指令如下所示: ffmpeg -devices输入设备介绍 通过配置ffmpeg的输入设备,我们可以访问系统中的某个多媒体设备的数据。下面详细介绍一下各个系统中…...

使用Shell笔记总结

一、变量 1、定义变量不加$符号&#xff0c;使用变量要用$&#xff1b;等号两边不能直接接空格符&#xff1b;通常大写字符为系统默认变量&#xff0c;自行设定变量可以使用小写字符。 2、双引号内的特殊字符如 $ 等&#xff0c;可以保有其符号代表的特性&#xff0c;即可以有…...

反常积分的审敛法

目录 无穷先的反常积分的审敛法 定理1&#xff1a;比较判别法 例题&#xff1a; 比较判别法的极限形式&#xff1a; 例题&#xff1a; 定理3&#xff1a;绝对收敛准则 例题&#xff1a; 无界函数的反常积分收敛法 例题&#xff1a; 无穷先的反常积分的审敛法 定理1&#x…...

python实战应用讲解-【numpy专题篇】numpy常见函数使用示例(十三)(附python示例代码)

目录 Python numpy.ma.mask_or()函数 Python numpy.ma.notmasked_contiguous函数 Python numpy.ma.notmasked_edges()函数 Python numpy.ma.where()函数 Python Numpy MaskedArray.all()函数 Python Numpy MaskedArray.anom()函数 Python Numpy MaskedArray.any()函数 …...

宁波小程序公司提供专业的小程序开发服务

在宁波小程序公司的服务中&#xff0c;我们致力于为客户提供清晰的内容结构和流畅的表达。我们通过深入的需求分析&#xff0c;确保每个项目都能符合客户特定的期望和市场需求。设计阶段注重市场调研&#xff0c;力求在视觉和功能上都能满足用户的使用习惯和偏好。开发过程中&a…...

保姆级教程:MogFace人脸检测模型-large快速上手,无需代码轻松体验

保姆级教程&#xff1a;MogFace人脸检测模型-large快速上手&#xff0c;无需代码轻松体验 1. 认识MogFace人脸检测模型 1.1 什么是MogFace MogFace是目前最先进的人脸检测方法之一&#xff0c;在Wider Face六项榜单上长期保持领先地位。这个模型通过三个创新点显著提升了检测…...

Vivado初始化设计慢?可能是这3个隐藏设置惹的祸

Vivado初始化设计慢&#xff1f;可能是这3个隐藏设置惹的祸 当你在深夜赶项目进度&#xff0c;Vivado却卡在"Initializing Design"界面转圈超过15分钟&#xff0c;那种焦虑感堪比考试时笔没水。作为Xilinx FPGA开发的核心工具&#xff0c;Vivado的初始化速度直接影响…...

2026 AI大模型岗位薪资全曝光:从30k到80w,程序员必备指南,非常详细收藏我这一篇就够了

文章主要展示了2026年AI领域热门岗位的薪资情况&#xff0c;包括华为、腾讯、联影等公司在多个城市的AI工程师、大模型算法等职位的薪资水平。数据显示AI人才市场需求旺盛&#xff0c;薪资从月薪3.6万到年包80万不等。文章提供了AI薪资专场的链接&#xff0c;邀请读者了解更多行…...

OpenClaw跨平台同步:GLM-4.7-Flash配置在多设备间保持一致

OpenClaw跨平台同步&#xff1a;GLM-4.7-Flash配置在多设备间保持一致 1. 为什么需要跨设备同步OpenClaw配置 上周我在出差时遇到一个尴尬场景&#xff1a;笔记本上的OpenClaw突然无法响应飞书消息&#xff0c;而所有配置都留在办公室的台式机上。这让我意识到——当AI助手成…...

VS Code终端切换全攻略:从PowerShell到CMD的保姆级教程(含常见问题解决)

VS Code终端切换全攻略&#xff1a;从PowerShell到CMD的保姆级教程&#xff08;含常见问题解决&#xff09; 在开发者的日常工作中&#xff0c;终端是不可或缺的工具。VS Code作为最受欢迎的代码编辑器之一&#xff0c;其内置终端功能强大且高度可定制。然而&#xff0c;许多开…...

AI虚拟员工平台完整搭建教程:从源码获取到正式上线,全流程记录

温馨提示&#xff1a;文末有资源获取方式最近AI赛道又火了一个新方向&#xff0c;很多人都在讨论&#xff0c;但真正能用起来的没几个。技术门槛摆在那&#xff0c;普通用户想上手确实不容易。今天这篇教程&#xff0c;我把从源码部署到正式上线的完整过程整理出来&#xff0c;…...

CANOE Demo版快速下载与激活指南

1. CANOE Demo版是什么&#xff1f;为什么你需要它&#xff1f; 如果你正在学习汽车电子开发或者从事相关领域的工作&#xff0c;CANOE这个名字一定不会陌生。作为Vector公司推出的主流汽车总线开发工具&#xff0c;它几乎成了行业标准。但对于刚入门的新手来说&#xff0c;动辄…...

智能突破2048:AI助手如何让数字合成不再依赖运气

智能突破2048&#xff1a;AI助手如何让数字合成不再依赖运气 【免费下载链接】2048-ai AI for the 2048 game 项目地址: https://gitcode.com/gh_mirrors/20/2048-ai 你是否曾在2048游戏中陷入数字迷宫&#xff1f;眼看着屏幕上散落的方块无从下手&#xff0c;移动一步就…...

Vue 2 中文文档:跨越语言鸿沟的技术民主化之旅

Vue 2 中文文档&#xff1a;跨越语言鸿沟的技术民主化之旅 【免费下载链接】v2.cn.vuejs.org &#x1f1e8;&#x1f1f3; Chinese translation for v2.vuejs.org 项目地址: https://gitcode.com/gh_mirrors/v2c/v2.cn.vuejs.org 你是否曾因语言障碍而错失了优秀技术框架…...