Springboot如何基于assembly服務(wù)化實(shí)現(xiàn)打包
(1)首先我們編輯 assembly.xml 配置文件,在前文的基礎(chǔ)上新增第三方依賴(lài)設(shè)置(高亮部分),實(shí)現(xiàn)將第三方的 jar 包添加到壓縮包里的 lib 目錄:
<?xml version='1.0' encoding='UTF-8'?><assembly> <!-- 必須寫(xiě),否則打包時(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> <!-- 打包的類(lèi)型,如果有N個(gè),將會(huì)打N個(gè)類(lèi)型的包 --> <formats><!-- <format>tar.gz</format>--> <format>zip</format> </formats> <includeBaseDirectory>true</includeBaseDirectory> <!--第三方依賴(lài)設(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->即用戶(hù)具有讀/寫(xiě)/執(zhí)行權(quán)限,組用戶(hù)和其它用戶(hù)具有讀寫(xiě)權(quán)限; 0644->即用戶(hù)具有讀寫(xiě)權(quán)限,組用戶(hù)和其它用戶(hù)具有只讀權(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編寫(xiě)問(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)目所有的依賴(lài)打入項(xiàng)目 jar 包里面。我們將其替換為 maven-jar-plugin,并進(jìn)行相關(guān)設(shè)置
<build> <plugins> <!-- 指定啟動(dòng)類(lèi),將依賴(lài)打成外部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加入到類(lèi)構(gòu)建路徑 --> <addClasspath>true</addClasspath> <!-- 外部依賴(lài)jar包的最終位置 --> <!-- 因?yàn)槲覀儗⒌谌絡(luò)ar和本項(xiàng)目jar放在同一個(gè)目錄下,這里就使用./ --> <classpathPrefix>./lib</classpathPrefix> <!-- 項(xiàng)目啟動(dòng)類(lèi) --> <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操作類(lèi)型上--> <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í)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. js實(shí)現(xiàn)碰撞檢測(cè)2. 用Spring JMS使異步消息變得簡(jiǎn)單3. JS實(shí)現(xiàn)前端動(dòng)態(tài)分頁(yè)碼代碼實(shí)例4. 一文帶你徹底理解Java序列化和反序列化5. 關(guān)于IDEA 2020.3 多窗口視圖丟失的問(wèn)題6. PHP驗(yàn)證碼工具-Securimage7. PHP使用Swagger生成好看的API文檔8. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條9. 通過(guò)實(shí)例解析Python文件操作實(shí)現(xiàn)步驟10. Python 下載Bing壁紙的示例

網(wǎng)公網(wǎng)安備