SpringCloud maven-assembly-plugin 多級目錄打包的實(shí)現(xiàn)
1、spring-boot-maven-plugin
springboot默認(rèn)打包工具為spring-boot-maven-plugin
pom配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.gsafety.bg.enterprise.EnterpriseApplication</mainClass>
<layout>ZIP</layout>
<!-- 打增量包時需要includes部分, 要打全量包刪除includes -->
<includes>
<include>
<groupId>com.gsafety.bg</groupId>
<artifactId>enterprise-controller</artifactId>
</include>
<include>
<groupId>com.gsafety.bg</groupId>
<artifactId>enterprise-service</artifactId>
</include>
<include>
<groupId>com.gsafety.bg</groupId>
<artifactId>enterprise-dao</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
打包后的目錄結(jié)構(gòu):

BOOT-INF內(nèi)包含目錄:lib(enterprise-service-1.0.0.jar、enterprise-dao-1.0.0.jar、enterprise-controller-1.0.0.jar)、classes、classpath.idx
2、maven-assembly-plugin
maven-assembly-plugin 插件的主要作用是允許用戶將項(xiàng)目輸出與它的依賴項(xiàng)、模塊、站點(diǎn)文檔、和其他文件一起組裝成一個可分發(fā)的歸檔文件,簡單的說,就是自定義打包的工具,有自己的配置文件(Assembly描述符文件)。微服務(wù)使用這個插件的概率比較高,平時普通的項(xiàng)目不需要這樣的實(shí)現(xiàn)方式。
pom配置:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<finalName>enterprise</finalName>
<encoding>utf-8</encoding>
<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>
assembly.xml
全部可設(shè)置節(jié)點(diǎn)可參考官網(wǎng):http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
<assembly>
<id>1.0</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<!-- 項(xiàng)目所需lib包-->
<!-- <dependencySets>-->
<!-- <!–把依賴都打包進(jìn)libs文件夾–>-->
<!-- <dependencySet>-->
<!-- <useProjectArtifact>true</useProjectArtifact>-->
<!-- <outputDirectory>libs</outputDirectory>-->
<!-- <scope>runtime</scope>-->
<!-- </dependencySet>-->
<!-- </dependencySets>-->
<fileSets>
<!--打包啟動文件到deploy目錄-->
<fileSet>
<!--需要打包的文件所在目錄 即start.sh-->
<directory>src/main/assembly/bin</directory>
<!--要打包到的地址-->
<outputDirectory>deploy</outputDirectory>
<!--linux權(quán)限-->
<fileMode>0755</fileMode>
</fileSet>
<!--打包可執(zhí)行jar到application-server目錄-->
<fileSet>
<directory>target</directory>
<outputDirectory>application-server</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!--打包src/main/resources到logs/enterprise目錄-->
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>logs/enterprise</outputDirectory>
<fileMode>0755</fileMode>
<!--打包不包含src/main/resources所有文件,即生成logs/enterprise空目錄-->
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
打包后的目錄結(jié)構(gòu):

查看application-server文件夾內(nèi)可執(zhí)行文件解壓目錄:

發(fā)現(xiàn)與spring-boot-maven-plugin打包后的目錄不一致,明顯缺少lib內(nèi)的三個jar和其他一些文件
3、maven-assembly-plugin打包后的可執(zhí)行文件缺失lib問題
修改pom文件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.gsafety.bg.enterprise.EnterpriseApplication</mainClass>
<layout>ZIP</layout>
<!-- 打增量包時需要includes部分, 要打全量包刪除includes -->
<includes>
<include>
<groupId>com.gsafety.bg</groupId>
<artifactId>enterprise-controller</artifactId>
</include>
<include>
<groupId>com.gsafety.bg</groupId>
<artifactId>enterprise-service</artifactId>
</include>
<include>
<groupId>com.gsafety.bg</groupId>
<artifactId>enterprise-dao</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 生成項(xiàng)目依賴到lib本地,并設(shè)置需要排除的jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>../../../lib</outputDirectory>
<!-- 需要排除的jar的 groupId -->
<excludeArtifactIds>
enterprise-controller,enterprise-service,enterprise-dao
</excludeArtifactIds>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<finalName>enterprise</finalName>
<encoding>utf-8</encoding>
<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>
</build>
即plugins先引用spring-boot-maven-plugin 后引用maven-assembly-plugin,這樣spring-boot-maven-plugin會將enterprise-service-1.0.0.jar、enterprise-dao-1.0.0.jar、enterprise-controller-1.0.0.jar三個jar打包到lib中,打包后maven-assembly-plugin就會將其打包進(jìn)enterprise-1.0.tar.gz。
這樣enterprise-1.0.tar.gz內(nèi)就包含了啟動文件(deploy)、可執(zhí)行文件(application-server/enterprise-main-1.0.0.jar)、日志目錄(logs/enterprise),符合目前項(xiàng)目部署的目錄結(jié)構(gòu)。

到此這篇關(guān)于SpringCloud maven-assembly-plugin 多級目錄打包的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringCloud maven-assembly-plugin 多級目錄打包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(44)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07
SpringBoot 實(shí)現(xiàn)定時任務(wù)的方法詳解
這篇文章主要介紹了SpringBoot 實(shí)現(xiàn)定時任務(wù)的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
Idea?springboot?springCloud熱加載熱調(diào)試兩種常用方式
這篇文章主要介紹了Idea?springboot?springCloud熱加載熱調(diào)試常用的兩種方式,在項(xiàng)目開發(fā)的過程中,需要修改調(diào)試的時候偶每次都需要重啟項(xiàng)目浪費(fèi)時間,下面是我整理的兩種常用的兩種方式,需要的朋友可以參考下2023-04-04
Java通過導(dǎo)出超大Excel文件解決內(nèi)存溢出問題
導(dǎo)出excel是咱Java開發(fā)的必備技能,下面這篇文章主要給大家介紹了關(guān)于Java通過導(dǎo)出超大Excel文件解決內(nèi)存溢出問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09
java實(shí)現(xiàn)將ftp和http的文件直接傳送到hdfs
前面幾篇文章,我們已經(jīng)做了很好的鋪墊了,幾個要用到的工具我們都做了出來,本文就是將他們集合起來,說下具體的用法,小伙伴們可以參考下。2015-03-03

