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
英文地址,請注明出處:http://en.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;指的是多個副本之間邏輯上…