Springboot如何基于assembly服務(wù)化實(shí)現(xiàn)打包
(1)首先我們編輯 assembly.xml 配置文件,在前文的基礎(chǔ)上新增第三方依賴設(shè)置(高亮部分),實(shí)現(xiàn)將第三方的 jar 包添加到壓縮包里的 lib 目錄:
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<!--
必須寫,否則打包時(shí)會(huì)有 assembly ID must be present and non-empty 錯(cuò)誤
這個(gè)名字最終會(huì)追加到打包的名字的末尾,如項(xiàng)目的名字為 hangge-test-0.0.1-SNAPSHOT,
則最終生成的包名為 hangge-test-0.0.1-SNAPSHOT-bin.tar.gz
-->
<id>bin</id>
<!-- 打包的類型,如果有N個(gè),將會(huì)打N個(gè)類型的包 -->
<formats>
<!-- <format>tar.gz</format>-->
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<!--第三方依賴設(shè)置-->
<dependencySets>
<dependencySet>
<!-- 不使用項(xiàng)目的artifact,第三方j(luò)ar不要解壓,打包進(jìn)zip文件的lib目錄 -->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<!--文件設(shè)置-->
<fileSets>
<!--
0755->即用戶具有讀/寫/執(zhí)行權(quán)限,組用戶和其它用戶具有讀寫權(quán)限;
0644->即用戶具有讀寫權(quán)限,組用戶和其它用戶具有只讀權(quán)限;
-->
<!-- 將src/main/assembly/bin目錄下的所有文件輸出到打包后的bin目錄中 -->
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
<!--如果是腳本,一定要改為unix.如果是在windows上面編碼,會(huì)出現(xiàn)dos編寫問(wèn)題-->
<lineEnding>unix</lineEnding>
<filtered>true</filtered><!-- 是否進(jìn)行屬性替換 -->
</fileSet>
<!-- 將src/main/assembly/config目錄下的所有文件輸出到打包后的config目錄中 -->
<fileSet>
<directory>src/main/assembly/config</directory>
<outputDirectory>config</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
<!-- 將src/main/resources下配置文件打包到config目錄 -->
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>./config</outputDirectory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.yml</include>
</includes>
<filtered>true</filtered><!-- 是否進(jìn)行屬性替換 -->
</fileSet>
<!-- 將項(xiàng)目啟動(dòng)jar打包到lib目錄中 -->
<fileSet>
<directory>target</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!-- 將項(xiàng)目說(shuō)明文檔打包到docs目錄中 -->
<!-- <fileSet>
<directory>.</directory>
<outputDirectory>./docs</outputDirectory>
<includes>
<include>*.md</include>
</includes>
<fileMode>0644</fileMode>
</fileSet>-->
<fileSet>
<directory>docs</directory>
<outputDirectory>./docs</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>src/main/assembly/docs</directory>
<outputDirectory>./docs</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
</assembly>
(2)接著編輯項(xiàng)目的 pom.xml 文件,先前使用的是 spring-boot-maven-plugin 來(lái)打包,這個(gè)插件會(huì)將項(xiàng)目所有的依賴打入項(xiàng)目 jar 包里面。我們將其替換為 maven-jar-plugin,并進(jìn)行相關(guān)設(shè)置
<build>
<plugins>
<!-- 指定啟動(dòng)類,將依賴打成外部jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 生成的jar中,不要包含pom.xml和pom.properties這兩個(gè)文件 -->
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<!-- 是否要把第三方j(luò)ar加入到類構(gòu)建路徑 -->
<addClasspath>true</addClasspath>
<!-- 外部依賴jar包的最終位置 -->
<!-- 因?yàn)槲覀儗⒌谌絡(luò)ar和本項(xiàng)目jar放在同一個(gè)目錄下,這里就使用./ -->
<classpathPrefix>./lib</classpathPrefix>
<!-- 項(xiàng)目啟動(dòng)類 -->
<mainClass>com.yuehang.disneyland.DisneylandApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<!--主要使用的是maven提供的assembly插件完成-->
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<descriptors>
<!--具體的配置文件-->
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!--綁定到maven操作類型上-->
<phase>package</phase>
<!--運(yùn)行一次-->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后打包出來(lái)的結(jié)構(gòu)

運(yùn)行就ok了
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中實(shí)現(xiàn)二叉樹(shù)的遍歷與重構(gòu)
這篇文章主要介紹了Java中實(shí)現(xiàn)二叉樹(shù)的遍歷與重構(gòu),樹(shù)是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個(gè)有限結(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合,把它叫做樹(shù)是因?yàn)樗雌饋?lái)像一棵倒掛的樹(shù),也就是說(shuō)它是根朝上,而葉朝下的,需要的朋友可以參考下2023-10-10
Spring中的@RestController注解詳細(xì)解析
這篇文章主要介紹了Spring中的@RestController注解詳細(xì)解析,@RestController 是 Spring Framework 中的一個(gè)注解,用于標(biāo)識(shí)一個(gè)類為 RESTful Web 服務(wù)的控制器(Controller),處理 HTTP 請(qǐng)求并返回相應(yīng)的數(shù)據(jù),2024-01-01
SpringBoot整合阿里?Druid?數(shù)據(jù)源的實(shí)例詳解
這篇文章主要介紹了SpringBoot整合阿里?Druid?數(shù)據(jù)源,主要講解了手動(dòng)配置方法,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
SpringBoot中Json工具類的實(shí)現(xiàn)
本文介紹在Java項(xiàng)目中實(shí)現(xiàn)一個(gè)JSON工具類,支持對(duì)象與JSON字符串之間的轉(zhuǎn)換,并提供依賴和代碼示例便于直接應(yīng)用,感興趣的可以了解一下2024-10-10
linux中nohup?java?-jar啟動(dòng)java項(xiàng)目的步驟
nohup是一個(gè)Unix和Linux命令,用于運(yùn)行關(guān)閉時(shí)不會(huì)被終止的進(jìn)程,這篇文章主要給大家介紹了關(guān)于linux中nohup?java?-jar啟動(dòng)java項(xiàng)目的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
Java編程Socket實(shí)現(xiàn)多個(gè)客戶端連接同一個(gè)服務(wù)端代碼
這篇文章主要介紹了Java編程Socket實(shí)現(xiàn)多個(gè)客戶端連接同一個(gè)服務(wù)端代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
SpringMVC日期類型接收空值異常問(wèn)題解決方法
這篇文章主要介紹了SpringMVC日期類型接收空值異常問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
SpringMVC Tomcat控制臺(tái)亂碼問(wèn)題解決方案
這篇文章主要介紹了SpringMVC Tomcat控制臺(tái)亂碼問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05

