【Maven】SpringBoot項目使用maven-assembly-plugin插件多環境打包

SpringBoot項目使用maven-assembly-plugin插件多環境打包

1.創建SpringBoot項目并在pom.xml文件中添加maven-assembly-plugin配置

<!--  多環境配置  --><profiles><!--  開發環境  --><profile><id>dev</id><properties><profileActive>dev</profileActive></properties><!-- 默認激活的環境 --><activation><activeByDefault>true</activeByDefault></activation></profile><!--  生產環境  --><profile><id>prod</id><properties><profileActive>prod</profileActive></properties><activation><activeByDefault>false</activeByDefault></activation></profile></profiles><build><!-- 打包后的jar包名稱 --><finalName>spring-boot-demo</finalName><!-- 打包配置 --><plugins><!-- maven 打包時跳過測試 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- &lt;!&ndash;  指定該Main Class為全局的唯一入口 &ndash;&gt;--><!-- <mainClass>com.xhs.ToolsApp</mainClass> --><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration><executions><execution><goals><!--可以把依賴的包都打包到生成的Jar包中--><goal>repackage</goal></goals></execution></executions></plugin><!-- 個性化打包 --><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><!-- 打包文件名字不包含 assembly.xml 中 id --><appendAssemblyId>false</appendAssemblyId><descriptors><descriptor>src/main/assembly/assembly.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins><!-- 資源配置 --><resources><resource><directory>src/main/java</directory><filtering>true</filtering><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>*.yml</include><include>*.xml</include></includes></resource></resources></build>

2.創建 在src/main/assembly目錄下創建assembly.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<assembly><!-- 打包文件名的標識符,用來做后綴--><id>make-assembly</id><!-- 打包的類型,如果有N個,將會打N個類型的包 --><formats><format>tar.gz</format><format>zip</format></formats><!-- 壓縮包下是否生成和項目名相同的根目錄 --><includeBaseDirectory>true</includeBaseDirectory><!-- 用來設置一組文件在打包時的屬性。--><fileSets><!-- 0755->即用戶具有讀//執行權限,組用戶和其它用戶具有讀寫權限;--><!-- 0644->即用戶具有讀寫權限,組用戶和其它用戶具有只讀權限;--><!-- 將src/bin目錄下的jar啟動腳本輸出到打包后的目錄中 --><fileSet><directory>${basedir}/src/main/bin</directory><outputDirectory>${file.separator}</outputDirectory><fileMode>0755</fileMode><includes><include>**.sh</include><include>**.bat</include></includes></fileSet><!-- 把項目的配置文件,打包進壓縮文件的config目錄 --><fileSet><directory>${basedir}/src/main/resources</directory><outputDirectory>config</outputDirectory><fileMode>0644</fileMode><includes><include>*.properties</include><include>*.yml</include><include>*.xml</include></includes></fileSet><!-- 把項目自己編譯出來的jar文件,打包進zip文件的根目錄 --><fileSet><directory>${project.build.directory}</directory><outputDirectory>${file.separator}</outputDirectory><includes><include>*.jar</include></includes></fileSet></fileSets>
</assembly>

3.在src/main/bin創建在linux環境啟動jar包的腳本

#!/bin/bash# jar包名稱
JAR_FILE="spring-boot-demo.jar"
# pid 名稱
PID_FILE="spring-boot-demo.pid"start() {if [ -f "$PID_FILE" ]; thenecho "應用程序已在運行,PID: $(cat $PID_FILE) .........."else# 后臺啟動jar包,并將啟動日志輸出到log.log文件中nohup java -jar -Dloader.path=.,3rd-li $JAR_FILE >> log.log 2>&1 &echo $! > $PID_FILEecho "應用程序已成功啟動,PID: $(cat $PID_FILE) .........."fi
}stop() {if [ -f "$PID_FILE" ]; thenkill -9 $(cat $PID_FILE)rm $PID_FILEecho "應用程序已成功停止.........."elseecho "應用程序未運行.........."fi
}restart() {echo "正在重啟.........."stopstartecho "重啟成功.........."
}case "$1" instart)start;;stop)stop;;restart)restart;;*)echo "使用: $0 {start|stop|restart} 命令"exit 1;;
esac

4.配置application.yml文件

#application.yml
spring:profiles:active: @profileActive@
#application-dev.yml
server:port: 8001spring:application:name: spring-boot-demo
#application-prod.yml
server:port: 8001spring:application:name: spring-boot-demo

5.啟動項目
在這里插入圖片描述
6.打包

mvn clean package -P prod

在這里插入圖片描述
7.打包后的目錄結構
在這里插入圖片描述

8.上傳到linux服務器并啟動jar包

# 解壓tar包
tar -zxf spring-boot-demo.tar.gz
#啟動jar包
sh app.sh start
#查看日志
tail -f log.log 

在這里插入圖片描述
9.調用接口測試
在這里插入圖片描述
在這里插入圖片描述
10.源碼地址
https://gitee.com/xhs101/spring-boot-demo

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37908.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新一代分布式融合存儲,數據場景All In One

1、摘要 2023年5月11日&#xff0c;浪潮信息全國巡展廣州站正式啟航。會上&#xff0c;重磅發布新一代分布式融合存儲AS13000G7&#xff0c;其采用極致融合架構設計理念&#xff0c;實現同一套存儲滿足四種非結構化數據的“All In One”高效融合&#xff0c;數據存力提升300%&a…

基于WebSocket的在線文字聊天室

與Ajax不同&#xff0c;WebSocket可以使服務端主動向客戶發送響應&#xff0c;本案例就是基于WebSocket的一個在線聊天室&#xff0c;不過功能比較簡單&#xff0c;只能滿足文字交流。演示如下。 案例學習于b站up主&#xff0c;鏈接 。這位up主講的非常清楚&#xff0c;值得去學…

item_get_sales-獲取TB商品銷量詳情

一、接口參數說明&#xff1a; item_get_sales-獲取商品銷量詳情&#xff0c;點擊更多API調試&#xff0c;請移步注冊API賬號點擊獲取測試key和secret 公共參數 請求地址: https://api-gw.onebound.cn/taobao/item_get_sales 名稱類型必須描述keyString是調用key&#xff08…

Idea 快捷鍵整理

Idea快捷鍵和自動代碼補全匯總 idea快捷鍵匯總 Ctrl 快捷鍵說明Ctrl F在當前文件進行文本查找 &#xff08;必備&#xff09;Ctrl R在當前文件進行文本替換 &#xff08;必備&#xff09;Ctrl Z撤銷 &#xff08;必備&#xff09;Ctrl Y刪除光標所在行 或 刪除選中的行 &am…

設計HTML5圖像和多媒體

在網頁中的文本信息直觀、明了&#xff0c;而多媒體信息更富內涵和視覺沖擊力。恰當使用不同類型的多媒體可以展示個性&#xff0c;突出重點&#xff0c;吸引用戶。在HTML5之前&#xff0c;需要借助插件為網頁添加多媒體&#xff0c;如Adobe Flash Player、蘋果的QuickTime等。…

【C++精華鋪】6.C++類和對象(下)類與對象的知識補充及編譯器優化

目錄 1. 再談構造 1.1 成員變量的初始化&#xff08;初始化列表&#xff09; 1.2 初始化列表的行為 1.3 explicit關鍵字 2. 類中的static成員 2.1 靜態成員變量 2.2 靜態成員函數 3. 友元 3.1 友元函數 3.1 友元類 4. 內部類 5. 匿名對象 6. 對象拷貝時候的編譯器優化…

GitHub 打不開解決方案

GitHub 這幾年國內普通用戶越來越難以訪問&#xff0c;github 作為全球最大的開源平臺&#xff0c;里面有用的內容很多&#xff0c;不管是對專業用戶還是普通用戶&#xff0c;無法訪問都是很嚴重的問題。 1.GitHub 加速鏡像 kgithub 是一個公益加速項目&#xff0c;僅需在 gi…

【LeetCode每日一題】——41.缺失的第一個正數

文章目錄 一【題目類別】二【題目難度】三【題目編號】四【題目描述】五【題目示例】六【題目提示】七【解題思路】八【時間頻度】九【代碼實現】十【提交結果】 一【題目類別】 哈希表 二【題目難度】 困難 三【題目編號】 41.缺失的第一個正數 四【題目描述】 給你一個…

Compute shader SV 理解圖

本圖轉子&#xff1a;【Computeshader】個人總結_蔣偉博的博客-CSDN博客

【Rust】Rust學習 第十二章一個 I/O 項目:構建一個命令行程序

本章既是一個目前所學的很多技能的概括&#xff0c;也是一個更多標準庫功能的探索。我們將構建一個與文件和命令行輸入/輸出交互的命令行工具來練習現在一些你已經掌握的 Rust 技能。 Rust 的運行速度、安全性、單二進制文件輸出和跨平臺支持使其成為創建命令行程序的絕佳選擇…

談一談在兩個商業項目中使用MVI架構后的感悟

作者&#xff1a;leobertlan 前言 當時項目采用MVP分層設計&#xff0c;組員的代碼風格差異也較大&#xff0c;代碼中類職責賦予與封裝風格各成一套&#xff0c;隨著業務急速膨脹&#xff0c;代碼越發混亂。試圖用 MVI架構 單向流 形成 掣肘 帶來一致風格。 但這種做法不夠以…

linux系列基本介紹

雖然我們常說Linux操作系統&#xff0c;這種叫法是不正確的&#xff0c;嚴格意義上講&#xff0c;Linux并不是操作系統&#xff0c;而是屬于操作系統的一個內核&#xff0c;inux內核提供了操作系統的核心功能&#xff0c;如進程管理、內存管理、文件系統等。 Linux有很多不同的…

LeetCode 熱題 100 JavaScript--33. 搜索旋轉排序數組

整數數組 nums 按升序排列&#xff0c;數組中的值 互不相同 。 在傳遞給函數之前&#xff0c;nums 在預先未知的某個下標 k&#xff08;0 < k < nums.length&#xff09;上進行了 旋轉&#xff0c;使數組變為 [nums[k], nums[k1], …, nums[n-1], nums[0], nums[1], …,…

yolov5 轉換為rknn模型在3588上運行

為了把yolov5在rk3588上跑起來&#xff0c;在網上搜羅了一圈,踩了一些坑。由于瑞芯微的文檔有升級&#xff0c;導致和網絡的文章有出入&#xff0c;所以做個記錄。 rknn-toolkit 轉換文檔&#xff1a; 瑞芯微的轉換文檔在 rknn-toolkit/example/pytorch/yolov5/REAME.md 里 …

LangChain入門:構建LLM驅動的應用程序的初學者指南

LangChain & DemoGPT 一、介紹 你有沒有想過如何使用大型語言模型&#xff08;LLM&#xff09;構建強大的應用程序&#xff1f;或者&#xff0c;也許您正在尋找一種簡化的方式來開發這些應用程序&#xff1f;那么你來對地方了&#xff01;本指南將向您介紹LangChain&#x…

【Sklearn】基于邏輯回歸算法的數據分類預測(Excel可直接替換數據)

【Sklearn】基于邏輯回歸算法的數據分類預測(Excel可直接替換數據) 1.模型原理2.模型參數3.文件結構4.Excel數據5.下載地址6.完整代碼7.運行結果1.模型原理 邏輯回歸是一種用于二分類問題的統計學習方法,盡管名字中含有“回歸”,但實際上是一種分類算法。它的基本原理是通…

網絡基礎--ARP協議介紹

1、ARP作用 ARP&#xff08; Address Resolution Protocol&#xff0c;地址解析協議&#xff09;是將 IP 地址解析為以太網 MAC 地址&#xff08;或稱物理地址&#xff09;的協議。在局域網中&#xff0c;當主機或其它網絡設備有數據要發送給另一個主機或設備時&#xff0c;它必…

Java鷹眼軌跡服務 輕騎小程序 運動健康與社交案例

Java地圖專題課 基本API BMapGLLib 地圖找房案例 MongoDB 百度地圖鷹眼軌跡服務 鷹眼軌跡服務概述 鷹眼是一套軌跡管理服務&#xff0c;提供各端SDK和API供開發者便捷接入&#xff0c;追蹤所管理的車輛/人員等運動物體。 基于鷹眼提供的接口和云端服務&#xff0c;開發者可以迅…

前后端分離------后端創建筆記(05)用戶列表查詢接口(下)

本文章轉載于【SpringBootVue】全網最簡單但實用的前后端分離項目實戰筆記 - 前端_大菜007的博客-CSDN博客 僅用于學習和討論&#xff0c;如有侵權請聯系 源碼&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

Java通過文件流和文件地址下載文件

通過文件流下載文件 如何使用 MultipartFile 進行文件上傳、下載到本地&#xff0c;并返回保存路徑呢&#xff1a; import org.springframework.web.multipart.MultipartFile;import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOExcep…