idea将服务封装为一个jar包

你使用的是 IntelliJ IDEA 2018,这个版本虽然不是最新的,但完全支持通过 图形化界面 打 JAR 包(无需命令行),非常适合你在公司内部将 Snowflake 模块打包成通用组件。

下面我将 手把手、一步一步、图文流程式地教你,如何在 IDEA 2018 中把你的 Snowflake 模块打包成一个 .jar 文件。


✅ 目标:用 IDEA 2018 图形化打 JAR 包

🎯 最终产出:一个类似 snowflake-id-generator-1.0.jar 的文件,别人引入就能用!


🧱 前提条件

确保你的项目结构如下:

MySnowflakeProject/
├── src/
│   └── main/
│       └── java/
│           └── com/example/snowflake/
│               ├── SnowflakeIdGenerator.java
│               ├── SnowflakeProperties.java
│               └── SnowflakeAutoConfiguration.java
├── resources/
│   └── META-INF/
│       └── spring.factories   ← 关键!自动配置入口
└── pom.xml                    ← Maven 项目

✅ 确保 spring.factories 内容正确:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.snowflake.SnowflakeAutoConfiguration

🖱️ 第一步:打开 Project Structure

  1. 在 IDEA 2018 中打开你的项目

  2. 点击顶部菜单:File → Project Structure...
    (快捷键:Ctrl + Alt + Shift + S


    (示意图:菜单位置)

🖱️ 第二步:进入 Artifacts 配置

  1. 在弹出的窗口左侧,选择 Artifacts

  2. 你会看到一个空列表,点击右边的 + 号(绿色加号)

  3. 选择:JAR → From modules with dependencies...


🖱️ 第三步:配置 JAR 打包参数

弹出窗口如下:

1. 选择 Module

  • 在下拉框中选择你的模块,例如:MySnowflakeProject.main

如果没看到,说明模块没被识别,先确认 pom.xml 是否已正确导入(右键 → Maven → Reload Project)

2. Main Class(可选)

  • 因为我们是 库(Library),不是可运行程序,所以这里不需要填
  • 你可以留空,或者取消勾选 “Main class”

3. 重要:勾选 “Include in project build”

✅ 务必勾上这一项!
表示你可以通过菜单 Build → Build Artifacts 来打包

4. Output directory(输出路径)

  • 默认是 out/artifacts/...
  • 你可以点击旁边的文件夹图标,自定义输出路径,比如:
    D:\company-jars\snowflake-id-generator.jar

点击 OK → 再点击右下角 ApplyOK


🖱️ 第四步:构建 JAR 包(点鼠标就行)

  1. 菜单栏:Build → Build Artifacts

  2. 在子菜单中选择你刚创建的 Artifact,例如:

    Build 'MySnowflakeProject:jar' → Rebuild

    (第一次用 Rebuild,之后改代码再用 Build)

  3. 等待几秒钟,底部状态栏会显示:

    Build artifact MySnowflakeProject:jar: SUCCESS

✅ 成功了!


📦 第五步:找到生成的 JAR 文件

去你刚才设置的输出目录找,比如:

D:\company-jars\MySnowflakeProject.jar

你可以把它重命名为更友好的名字,比如:

snowflake-id-generator-1.0.jar

📥 第六步:在其他项目中使用这个 JAR

方法一:本地依赖引入(适合测试、小团队)

步骤 1:把 JAR 放到目标项目的 lib 目录

比如在另一个 Spring Boot 项目中:

order-service/
├── src/
├── pom.xml
└── lib/└── snowflake-id-generator-1.0.jar
步骤 2:修改 pom.xml
<dependency><groupId>com.company</groupId><artifactId>snowflake-starter</artifactId><version>1.0</version><scope>system</scope><systemPath>${project.basedir}/lib/snowflake-id-generator-1.0.jar</systemPath>
</dependency>
步骤 3:刷新 Maven

右键 pom.xmlMaven → Reload Project

✅ 你会在 External Libraries 中看到这个 JAR

步骤 4:使用
@Autowired
private SnowflakeIdGenerator idGenerator;public void createOrder() {long id = idGenerator.nextId();
}

方法二:安装到本地 Maven 仓库(推荐,便于管理)

虽然你说不用命令行,但这个命令非常简单,只需执行一次:

mvn install:install-file ^-Dfile=D:\company-jars\snowflake-id-generator-1.0.jar ^-DgroupId=com.company ^-DartifactId=snowflake-starter ^-Dversion=1.0 ^-Dpackaging=jar

然后在其他项目中就可以像普通依赖一样用了:

<dependency><groupId>com.company</groupId><artifactId>snowflake-starter</artifactId><version>1.0</version>
</dependency>

⚠️ 常见问题(IDEA 2018 特有)

问题解决方法
❌ 找不到 spring.factories检查 resources/META-INF/ 是否被正确包含 → 在 Artifact 配置中确认 resources 被打包进去
❌ 打包后没有 .class 文件确保项目已编译(Build → Build Project)
❌ Build Artifacts 菜单灰色检查是否成功创建了 Artifact,且项目没有错误
❌ 依赖没打进去如果你想打包所有依赖(fat jar),需要额外配置,但我们这里是只打包自己的代码,依赖由使用者引入

✅ 总结:IDEA 2018 打 JAR 包流程(5步)

步骤操作
1️⃣File → Project Structure → Artifacts → + → JAR → From modules...
2️⃣选择模块,不填 Main Class,勾选 Include in project build
3️⃣设置输出路径(如 D:\jars\
4️⃣Build → Build Artifacts → Rebuild
5️⃣去输出目录拿 JAR,分发给团队使用 ✅

🎯 最终效果

任何一个同事拿到这个 JAR,引入项目,配置一下 application.yml,就能直接用 @Autowired SnowflakeIdGenerator 生成唯一 ID!

这就是 企业级组件化开发 的标准做法!

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

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

相关文章

ZYNQ [Petalinux的运行]

一、下载ubuntu 下载地址很多&#xff0c;这里提供了一个&#xff1a;http://mirrors.aliyun.com/ubuntu-releases/14.04/ 推荐开始浏览器下载之后复制下载链接使用迅雷下载。 二、虚拟机安装Ubuntu vmware中安装Ubutun–这部分不展示 安装ssh sudo apt install openssh-s…

excel 破解工作表密码

破解Excel工作表密码可通过易用宝工具、VBA脚本或修改文件格式实现&#xff0c;具体方法需根据文件类型和密码保护类型选择。 ‌使用易用宝工具&#xff08;推荐&#xff09;‌ 适用于Excel 2007及以上版本&#xff0c;操作简便且无需编程基础&#xff1a; 下载安装Excel易用…

Deepseek + RAGFlow 搭建本地知识库问答系统

Deepseek RAGFlow 搭建本地知识库问答系统原因为什么要本地部署RAG模型和微调模型区别本地部署流程1. 下载 ollama &#xff0c;通过ollama把Deepseek模型下载到本地运行。2. 下载RAGFlow 源代码和 Docker &#xff0c;通过Docker部署RAGFlow。3. 在RAGFlow中构建个人知识库并…

elementui附件上传自定义文件列表,实现传完即可预览、下载、删除,二次封装el-upload

背景当前 elementui 的文件上传组件在上传完文件之后只支持删除&#xff0c;用户希望可以看到附件信息&#xff0c;还可以预览自己刚刚上传但未提交的文件&#xff0c;还希望可以下载&#xff0c;因为公司的下载功能当前是通过 OnlyOffice 实现了文件格式转换&#xff0c;所以我…

linux的conda配置与应用阶段的简单指令备注

1.新建某虚拟环境 conda create -n 虚拟环境名 pythonPython版本号 (-y)2.退出当前虚拟环境 conda deactivate3.查看当前conda环境下所有的虚拟环境 conda info --envs4.查看conda版本和位置 conda --versionwhich conda5.激活某个conda虚拟环境 conda activate 虚拟环境名

虚拟化技术 ——KVM

一、KVM 技术简介 KVM&#xff08;Kernel-based Virtual Machine&#xff0c;基于内核的虚拟机&#xff09;是 Linux 内核原生支持的全虚拟化解决方案&#xff0c;依托 CPU 的硬件虚拟化技术&#xff08;Intel VT-x/AMD-V&#xff09;实现高效的虚拟机运行。它将 Linux 内核转…

线程间Bug检测工具Canary

Canary1.Introduction2.Approach2.1.数据依赖分析2.2.线程间依赖分析3.Bug检测4.Evaluation参考文献1.Introduction 主要做跨线程value-flow bug检查&#xff0c;下面代码中两个函数中存在指向关系&#xff1a;1. x→o1x \rightarrow o_1x→o1​, b→o2b \rightarrow o_2b→o2…

AEB 强制来临,东软睿驰Next-Cube-Lite有望成为汽车安全普惠“破局器”

AEB 强制时代正在悄然谱写“普惠安全”的行业底色。日前&#xff0c;备受关注的强制性国家标准《轻型汽车自动紧急制动系统技术要求及试验方法》&#xff08;以下简称“新国标”&#xff09;意见征求阶段已经结束。该标准将替代现行国标GB/T 39901-2021&#xff0c;计划于2028年…

css的white-space: pre

用户从别的地方复制的配置文件&#xff0c;粘贴到输入框内&#xff0c;需要保留原始格式发送给后端。核心步骤&#xff1a;### 1. 格式保持机制 - white-space: pre &#xff1a;这是最关键的CSS属性&#xff0c;确保所有空格、制表符、换行符都被保留 - wrap"off" &…

【AI解读源码系列】ant design mobile——Space间距

前言 笔者目前业务主要围绕ant design mobile组件库来交付H5前端工作。 故此出此专栏来解读每一个组件是如何实现的。 本文基于AI来解读Space组件。 文档链接&#xff1a; https://mobile.ant.design/zh/components/space 源码&#xff1a; https://github.com/ant-design/ant-…

《用餐》,午餐食堂即景小诗分享(手机/小视频/光盘/养生)

大妈食堂碎碎念&#xff0c;怪罪手机延工期。 笔记模板由python脚本于2025-08-21 19:34:46创建&#xff0c;本篇笔记适合喜欢友善生活和诗的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Python官…

高通平台WIFI学习-- 基于WCN6750 Tri-Band 2x2 MIMO 802.11ax的讲解

一 前言: 官方资料显示WLAN支持如下的Key features ■ Compliant with IEEE 802.11a/b/g/n/ac/ax ■ Supports 2x2 multi-user multiple-input multiple-output (MU-MIMO) ■ Up to 2.9 Gbps data rate (2x2 160 MHz) ■ Tri-band 2.4 GHz/5 GHz/6 GHz support ■ 20 MHz…

javaweb开发笔记——XML_Tomcat10_HTTP

第四章 XML_Tomcat10_HTTP 一 XML XML是EXtensible Markup Language的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签。 可扩展 三个字表面上的意思是XML允许自定义格式。但这不代…

Python从入门到自动化运维

文章目录IPO编程方式、print、input函数print() -- 输出信息到屏幕input() -- 读取用户的输入基本数据类型int、float、bool、str常用 str 操作方法格式化字符串的三种方式数据验证方法字符串拼接字符串去重数据类型转换函数容器类型列表(list)&#xff1a;可变、可重复、有序元…

【数据可视化-98】2025年上半年地方财政收入Top 20城市可视化分析:Python + Pyecharts打造炫酷暗黑主题大屏

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

【基础-单选】向服务器提交表单数据,以下哪种请求方式比较合适

向服务器提交表单数据&#xff0c;以下哪种请求方式比较合适A.RequestMethod.GET B.RequestMethod.PUT C.RequestMethod.POST D.RequestMethod.DELETE 解释如下&#xff1a; 在HarmonyOS应用开发中&#xff0c;向服务器提交表单数据&#xff0c;C. RequestMethod.POST 是比较合…

论文阅读:Code as Policies: Language Model Programs for Embodied Control

地址&#xff1a;Code as Policies: Language Model Programs for Embodied Control 摘要 针对代码补全任务训练的大型语言模型&#xff08;LLMs&#xff09;已被证实能够从文档字符串&#xff08;docstrings&#xff09;中合成简单的 Python 程序。研究发现&#xff0c;这些…

Vue 3 customRef 完全指南:自定义响应式引用的终极教程

&#x1f4d6; 概述 customRef() 是 Vue 3 中用于创建自定义响应式引用的组合式 API。它允许开发者完全控制响应式数据的读取和写入行为&#xff0c;为复杂的响应式逻辑提供了强大的灵活性。 &#x1f3af; 基本概念 什么是 customRef&#xff1f; customRef() 是一个工厂函数…

Java项目-苍穹外卖_Day1

项目来源&#xff1a; 【黑马程序员 Java项目实战《苍穹外卖》】 [https://www.bilibili.com/video/BV1TP411v7v6] ZZHow(ZZHow1024) 软件开发整体介绍 软件开发流程 需求分析&#xff1a;需求规格说明书、产品原型。设计&#xff1a;UI 设计、数据库设计、接口设计。编码…

面试可能问到的问题思考-MySQL

MySQL 1. 数据库与缓存的一致性 引入缓存&#xff0c;因为缓存只是数据库数据的副本&#xff0c;那么就可能存在副本和原数据不一致的情况 一致性 ACID里面的C&#xff0c;和CAP中的C不是一个概念&#xff0c;虽然都叫一致性。CAP中的C&#xff0c;指的是多个副本之间逻辑上…