自己动手造轮子:如何创建JAR并通过Maven在Spring Boot中引用

让代码复用变得简单优雅——3分钟学会封装专属工具库

作为Java开发者,你是否遇到过这些痛点?

  • 多个项目重复编写相同工具类

  • 工具代码分散难以统一维护

  • 团队协作缺乏标准化工具库

本文将手把手教你创建自己的JAR包,并优雅地集成到Spring Boot项目中,从此告别CV大法!

一、5分钟创建你的专属JAR

第一步:初始化Maven项目

 1.File》New》Project

选择java

1. 语义化版本控制

pom.xml中采用标准版本格式:

<!-- pom.xml -->
<project><groupId>com.dafu</groupId><artifactId>my-utils</artifactId><version>1.0.0</version>  <!-- 主版本.次版本.修订号 --><properties><java.version>1.8</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target></properties>
</project>

第二步:编写核心工具类

创建文件:src/main/java/com/dafu/utils/StringUtils.java

package com.dafu.utils;/*** @author:DaFu* @date: 2025/7/24 11:17*/
public class StringUtils {// 首字母大写转换public static String capitalize(String str) {if (str == null || str.isEmpty()) {return str;}return str.substring(0, 1).toUpperCase() + str.substring(1);}// 生成随机字符串public static String randomString(int length) {String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";StringBuilder sb = new StringBuilder();for (int i = 0; i < length; i++) {sb.append(chars.charAt((int) (Math.random() * chars.length())));}return sb.toString();}public static String toUpperCase(String input) {return input != null ? input.toUpperCase() : "";}}
第三步:打包并安装到本地仓库 
  3.1命令打包
# 进入项目目录
cd my-utils# 打包并安装到本地Maven仓库
mvn clean install
 3.2在 IDE 中安装(IntelliJ IDEA 示例)
  1. 打开右侧 Maven 工具窗口

  2. 展开你的自定义项目

  3. 双击执行 Lifecycle → clean

  4. 双击执行 Lifecycle → install

控制台看到如下输出即表示成功:

[INFO] --- install:3.1.2:install (default-install) @ my-utils ---
[INFO] Installing D:\我的文件\专属JAR\my-utils\pom.xml to C:\Users\Administrator\.m2\repository\com\dafu\my-utils\1.0.0\my-utils-1.0.0.pom
[INFO] Installing D:\我的文件\专属JAR\my-utils\target\my-utils-1.0.0.jar to C:\Users\Administrator\.m2\repository\com\dafu\my-utils\1.0.0\my-utils-1.0.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.874 s
[INFO] Finished at: 2025-07-24T11:36:39+08:00
[INFO] ------------------------------------------------------------------------

安装后的文件位置:

安装后的文件会出现在以下路径: 

 ~/.m2/repository/你的groupId/你的artifactId/版本号/

例如:

~/.m2/repository/com/dafu/my-utils/1.0.0/
├── my-utils-1.0.0.jar
├── my-utils-1.0.0.pom
└── 其他元数据文件 

验证安装是否成功:

  1. 检查本地仓库

    # Linux/macOS
    ls ~/.m2/repository/com/dafu/my-utils/1.0.0# Windows
    dir %USERPROFILE%\.m2\repository\com\dafu\my-utils\1.0.0

二、Spring Boot项目中的优雅集成

第一步:添加依赖到pom.xml
   <!--引用自定义 my-utils JAR --><dependency><groupId>com.dafu</groupId><artifactId>my-utils</artifactId><version>1.0.0</version></dependency>

 引用自定义 my-utils JAR 刷新Maven

第二步:在Spring Boot中调用工具类 

创建测试: src/test/java/com/dafu/springboottest/SpringBootTestApplicationTests.java

四、常见问题排雷指南

问题1:依赖找不到(ClassNotFound)
✅ 解决方案:

# 1. 检查本地仓库是否存在该JAR
ls ~/.m2/repository/com/dafu/my-utils# 2. 强制更新依赖
mvn clean install -U

五、为什么值得封装自己的JAR?

  1. 代码复用率提升:一次封装,终身受益

  2. 统一技术栈:团队共享标准化工具库

  3. 持续演进能力:独立更新不影响主项目

  4. 专业度提升:展现架构设计能力

优秀的开发者不仅是工具的使用者,更是工具的创造者。

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

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

相关文章

使用dea工具 给vue 里面的ts打断点

在 Vue 项目中使用 TypeScript 时&#xff0c;我们通常会在 IDE&#xff08;如 JetBrains 的 IntelliJ IDEA 或 WebStorm&#xff09;中设置断点进行调试。以下是详细步骤&#xff1a; 准备工作 确保项目已配置 source maps&#xff08;Vue CLI 创建的项目默认已配置&#xff0…

Zabbix 企业级分布式监控

目录 简介 一、监控系统基础 1.1 监控的价值 1.2 监控的 5 大类型与 5 大层次 1.3 监控系统的实现原理 二、Zabbix&#xff1a;企业级监控方案 2.1 Zabbix 简介 2.2 Zabbix 核心功能特性 2.3 Zabbix 角色与架构 三、Zabbix 部署案例 3.1 资源清单 3.2 基础环境配置…

SQL JOIN 全解析:用 `users` 与 `orders` 表彻底掌握内连接、左连接、右连接

SQL JOIN 全解析&#xff1a;用 users 与 orders 表彻底掌握内连接、左连接、右连接 在日常开发中&#xff0c;SQL 的连接&#xff08;JOIN&#xff09;语句是数据库查询的核心技能。尤其在多表联合查询时&#xff0c;不掌握好 INNER JOIN、LEFT JOIN、RIGHT JOIN&#xff0c;…

(一)从零搭建unity3d机械臂仿真-unity3d导入urdf模型

1.新建工程并加载模型 &#xff08;1&#xff09;unity中新建3d工程 &#xff08;2&#xff09;将机器人模型导入到unity3d中 导入开源Unity-Robotics-Hub的机械臂。 详细操作参考视频 ROS Unity URDF Import Testing Robot Motion 使用 URDF Importer工具 在 Unity 中&#x…

Linux之网络部分-应用层自定义协议与序列化

一、应用层 1.1、理解协议 协议是一种 "约定". socket api 的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的。如果我们要传输一些 "结构化的数据" 怎么办呢? 其实&#xff0c;协议就是双方约定好的结构化的数据。 1.2、网络版计…

机器学习week3-分类、正则化

1. 逻辑回归1.1. 线性回归 vs 逻辑回归对比维度线性回归逻辑回归任务类型回归&#xff08;预测连续值&#xff09;分类&#xff08;预测离散类别&#xff09;输出范围(−∞,∞)[0,1]&#xff08;概率值&#xff09;损失函数均方误差&#xff08;MSE&#xff09;对数损失&#x…

FastAdmin 中生成插件

在 FastAdmin 中生成一个 OCR 发票识别插件&#xff0c;可以按照以下步骤进行开发。这里假设你已经熟悉 FastAdmin 插件开发的基本流程&#xff0c;并会使用 Composer 和 PHP 扩展。1. 创建插件骨架使用 FastAdmin 命令行工具生成插件基础结构&#xff1a;php think addon -a o…

DevExpress WinForms中文教程:Grouping(分组)- 如何自定义分组算法?

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

PHP 与 Vue.js 结合的前后端分离架构

PHP 与 Vue.js 结合是构建现代 Web 应用的流行技术栈&#xff0c;通常采用 前后端分离架构。以下是关键要点和推荐实现方案&#xff1a; 一、技术栈组合 角色技术选项后端 (PHP)Laravel (推荐)、Symfony、CodeIgniter前端 (Vue)Vue 2/3、Vue Router、Pinia/Vuex、Vite通信协议…

XML高效处理类 - 专为Office文档XML处理优化

/**** 提供XML读取、写入、修改、查询等高级功能&#xff0c;支持命名空间和复杂XML结构* * 主要功能&#xff1a;* 1. 复杂路径解析&#xff08;支持属性筛选、索引、通配符&#xff09;* 2. 完整节点类型支持&#xff08;元素、文本、CDATA、注释、PI&#xff09;* 3. 高效元…

星慈光编程虫2号小车讲解第一篇--向前向后

星慈光编程虫2号小车是一款基于微控制器&#xff08;如Arduino&#xff09;的编程教学小车&#xff0c;常用于学习机器人控制和编程基础。本讲解将重点介绍小车的基本运动&#xff1a;前进、后退、左转和右转。这些运动通过控制电机实现&#xff0c;通常涉及调整电机的方向和速…

iOS 加固工具有哪些?快速发布团队的实战方案

在当今快速迭代的 iOS 开发环境中&#xff0c;团队需要在高频上线与应用安全之间找到平衡。快速发布不应牺牲安全性&#xff0c;而安全加固也不应成为阻碍上线的瓶颈。这就要求开发者在加固工具的选型与流程设计上&#xff0c;做到既高效又可靠。 那么&#xff0c;iOS 加固工具…

结构型模式-架构解耦与扩展实践

结构型模式聚焦于对象间的组合关系&#xff0c;通过优化类与对象的装配方式&#xff0c;实现系统的灵活性与可扩展性。在分布式系统中&#xff0c;由于多节点协作、跨网络通信及异构环境集成等特性&#xff0c;传统结构型模式需进行适应性改造&#xff0c;以应对分布式特有的复…

scratch笔记和练习-第三课

角色的大小变化 亮度等特效设置 流程图图形符号 Figma攻略&#xff1a;26个流行流程图符号及其解释 练习 实现在闪动10次后角色缓缓变回原形

Redis MCP 安装与配置完整指南

一、Redis MCP 简介 Redis MCP (Managed Control Plane) 是一个独立于 Redis 服务运行的管理控制平台&#xff0c;用户可通过该平台快速高效地管理和配置 Redis 实例。Redis MCP 可配合开源 Redis 或 Redis Cloud 使用。 二、安装 Redis MCP 服务 Redis MCP 提供多种安装方式&a…

Spring Boot配置文件加载全指南:从基础到Spring Cloud集成

​​​ ​​一、核心概念​ 配置文件默认存在加载顺序优先级主要用途必需依赖bootstrap.yml❌ 无1(最先)最高Spring Cloud上下文初始化spring-cloud-starter-bootstrapbootstrap.properties❌ 无1(略高于.yml)最高同上同上application.yml✅ 自动创建2中等应用核心配置无appl…

Python通关秘籍(六)数据结构——字典

前文复习 五、数据结构 5.1 列表(List) 列表是一种有序的可变数据集合,可以包含不同类型的元素。

自学嵌入式 day33 TCP、HTTP协议(超文本传输协议)

6、黏包问题&#xff08;1&#xff09;、原因&#xff1a;发送方发送数据太快或者接收方接收数据太慢&#xff0c;导致数据在缓冲区缓存。&#xff08;2&#xff09;、解决方法&#xff1a;①发送指定大小数据&#xff08;结构体&#xff09;问题&#xff1a;结构体对齐问题&am…

LinuxShell 的 Here-Document(<< EOF) 笔记250723

LinuxShell 的 Here-Document(<< EOF) 笔记250723 Here-Document(<< EOF) Linux Shell Here Document (<< EOF) 终极指南 Here Document&#xff08;立即文档&#xff09;是 Shell 中用于多行输入重定向的强大功能&#xff0c;其核心语法为 << DELI…

【windows修复】解决windows10,没有【相机] 功能问题

问题: windows10,相机模块,好像是被卸载了,想重新安装 方法简介: 先下载windows store, 然后,在windows store 里面下载 相机功能: 解决: 直接下载官方离线包并手动安装(成功率 90%+) 1 用浏览器打开 https://store.rg-adguard.net 这是微软 CDN 解析站,安…