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

自己动手造轮子:如何创建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.dtcms.com/a/295704.html

相关文章:

  • Opencv C# 重叠 粘连 Overlap 轮廓分割 (不知道不知道)
  • Unity 进行 3D 游戏开发如何入门
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWModeManager
  • 智慧驾驶疲劳检测算法的实时性优化
  • 深入思考【九九八十一难】的意义,试用歌曲能否解释
  • 【论文阅读50】-融合领域知识与可解释深度学习
  • 如何构建企业级 Mentor EDA 仿真平台
  • 进程调度的艺术:从概念本质到 Linux 内核实现
  • 从“各玩各的”到“无缝贴贴”:Modbus转Profinet让机器人告别“信息孤岛”
  • 【自动化运维神器Ansible】Ansible常用模块之shell模块详解
  • 数据版本控制系统(Oxen)
  • Terraform与Ansible的关系
  • Mysql-UDF提权
  • 家政小程序系统开发:开启智慧家政新时代
  • 详解力扣高频 SQL 50 题-1757.可回收且低脂的产品【入门】
  • 使用phpstudy极简快速安装mysql
  • LLM层归一化:γβ与均值方差的协同奥秘
  • 用 Function Call 让 AI 主动调用函数(超入门级示例)|保姆级大模型应用开发实战
  • day 34 打卡
  • LLM中典型的Transformer层中:MLP Residual; LN Agg: μ, σ; SM Agg 是什么意思
  • [202103][Docker 实战][第2版][耿苏宁][译]
  • [Linux入门] Linux 网络设置入门:从查看、测试到配置全攻略
  • 进阶系统策略
  • 二分查找----4.搜索旋转排序数组
  • 为什么Java的String不可变?
  • 洛谷P1512 伊甸园日历游戏
  • Qt(资源库和按钮组)
  • Django基础(八)———数据库外键及表关系
  • DRF - 博客列表API
  • GaussDB 数据库架构师(八) 等待事件概述-1