Springboot如何基于assembly服務(wù)化實現(xiàn)打包
(1)首先我們編輯 assembly.xml 配置文件,在前文的基礎(chǔ)上新增第三方依賴設(shè)置(高亮部分),實現(xiàn)將第三方的 jar 包添加到壓縮包里的 lib 目錄:
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<!--
必須寫,否則打包時會有 assembly ID must be present and non-empty 錯誤
這個名字最終會追加到打包的名字的末尾,如項目的名字為 hangge-test-0.0.1-SNAPSHOT,
則最終生成的包名為 hangge-test-0.0.1-SNAPSHOT-bin.tar.gz
-->
<id>bin</id>
<!-- 打包的類型,如果有N個,將會打N個類型的包 -->
<formats>
<!-- <format>tar.gz</format>-->
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<!--第三方依賴設(shè)置-->
<dependencySets>
<dependencySet>
<!-- 不使用項目的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上面編碼,會出現(xiàn)dos編寫問題-->
<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>
<!-- 將項目啟動jar打包到lib目錄中 -->
<fileSet>
<directory>target</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!-- 將項目說明文檔打包到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)接著編輯項目的 pom.xml 文件,先前使用的是 spring-boot-maven-plugin 來打包,這個插件會將項目所有的依賴打入項目 jar 包里面。我們將其替換為 maven-jar-plugin,并進(jìn)行相關(guān)設(shè)置
<build>
<plugins>
<!-- 指定啟動類,將依賴打成外部jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 生成的jar中,不要包含pom.xml和pom.properties這兩個文件 -->
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<!-- 是否要把第三方j(luò)ar加入到類構(gòu)建路徑 -->
<addClasspath>true</addClasspath>
<!-- 外部依賴jar包的最終位置 -->
<!-- 因為我們將第三方j(luò)ar和本項目jar放在同一個目錄下,這里就使用./ -->
<classpathPrefix>./lib</classpathPrefix>
<!-- 項目啟動類 -->
<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>
然后打包出來的結(jié)構(gòu)

運(yùn)行就ok了
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中的@RestController注解詳細(xì)解析
這篇文章主要介紹了Spring中的@RestController注解詳細(xì)解析,@RestController 是 Spring Framework 中的一個注解,用于標(biāo)識一個類為 RESTful Web 服務(wù)的控制器(Controller),處理 HTTP 請求并返回相應(yīng)的數(shù)據(jù),2024-01-01
SpringBoot整合阿里?Druid?數(shù)據(jù)源的實例詳解
這篇文章主要介紹了SpringBoot整合阿里?Druid?數(shù)據(jù)源,主要講解了手動配置方法,結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11
linux中nohup?java?-jar啟動java項目的步驟
nohup是一個Unix和Linux命令,用于運(yùn)行關(guān)閉時不會被終止的進(jìn)程,這篇文章主要給大家介紹了關(guān)于linux中nohup?java?-jar啟動java項目的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
Java編程Socket實現(xiàn)多個客戶端連接同一個服務(wù)端代碼
這篇文章主要介紹了Java編程Socket實現(xiàn)多個客戶端連接同一個服務(wù)端代碼,具有一定參考價值,需要的朋友可以了解下。2017-11-11

