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

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.dtcms.com/a/342442.html

相关文章:

  • RabbitMQ如何确保消息发送和消息接收
  • 无监督学习(聚类 异常检测)
  • 数据大屏全链路质量保障测试
  • Eino 框架组件协作指南 - 智能图书馆建设手册
  • java基础(十三)消息队列
  • 【Springboot进阶】Java切面编程对性能的影响深度分析
  • K8s概念之进程、容器与 Pod 的终极指南
  • 第二阶段Winform-3:常用控件介绍2
  • 算法题(187):程序自动分析
  • k8s集群限制不同用户操作
  • Windows 笔记本实现仅关屏仍工作:一种更便捷的 “伪熄屏” 方案
  • 基于Spring Cloud Gateway动态路由与灰度发布方案对比与实践指导
  • 哈希表知识总结
  • 风吸式杀虫灯在果园的作用
  • python的校园研招网系统
  • 面试题24:Spring循环依赖
  • 为什么可以kvcache
  • 8月21日作业
  • 【python实用小脚本-194】Python一键给PDF加水印:输入文字秒出防伪文件——再也不用开Photoshop
  • 文字识别——PDF OCR
  • electron-vite_19配置环境变量
  • 亚马逊站外推广效能重构:自然排名提升的逻辑与实操边界
  • 底层逻辑颠覆者:Agentic BI如何通过“Data + AI Agent”架构重构数据价值链?
  • 【C++】继承(详解)
  • 开心实习之第二十九天
  • Bartender 5 多功能菜单栏管理(Mac电脑)
  • NPM组件 @angular_devkit/core 等窃取主机敏感信息
  • 消息中间件选型分析:RabbitMQ vs RocketMQ vs Kafka
  • java生成带水印的pdf文件
  • 【从零构建企业级线程池管理系统:Python并发编程实战指南】