电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring boot打包jar分離lib和resources方法實(shí)例

瀏覽:123日期:2023-09-05 13:35:38

為什么要配置、依賴文件分離:

1.在傳統(tǒng)jar包中,所有文件都打包到一個(gè)jar包中,jar非常臃腫,在進(jìn)行服務(wù)更新部署時(shí)非常不便,而且傳輸不穩(wěn)定時(shí)導(dǎo)致傳輸失敗。如果過(guò)實(shí)行文件分離、在依賴不改變的情況下,僅僅上傳更新后的 編譯文件是非常方便的。

如果要修改一些配置文件:properties、xml,靜態(tài)文件等可以直接在服務(wù)器上編輯。

那么怎么實(shí)行配置、依賴文件分離呢?

插件介紹

maven-jar-plugin 這個(gè)插件式專門(mén)用來(lái)打包用的,可以配置需要打包進(jìn)去的文件,程序的入口類等。 maven-resources-plugin 這個(gè)插件是用來(lái)拷貝資源文件的。 maven-maven-dependency-plugin 這個(gè)插件是用來(lái)拷貝依賴庫(kù)的。 maven-assembly-plugin 可以說(shuō)包含了以上插件的功能,但是可以做到更精細(xì)的控制。 spring-boot-maven-plugin 這個(gè)不用說(shuō),springboot 項(xiàng)目最重要的插件,整個(gè)項(xiàng)目的打包處理過(guò)程還是要依附于它。

打包成可執(zhí)行jar,不僅僅局限SpringBoot項(xiàng)目(主入口函數(shù)存在)

maven-jar-plugin 插件打包jar

在pom文件中配置,但是這樣 依賴的jar并不會(huì)打進(jìn)來(lái)(后面會(huì)有解決方法),適用不需要依賴文件的項(xiàng)目。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.3</version><configuration> <archive> <manifest> <!--是否添加依賴--> <addClasspath>true</addClasspath> <!--設(shè)置啟動(dòng)類--> <mainClass>xxx.xxx.Main</mainClass> </manifest> </archive> <!--設(shè)置生成jar輸出位置--> <outputDirectory>${project.build.directory}</outputDirectory></configuration> </plugin>

maven-assembly-plugin 插件打包jar

<plugin><artifactId>maven-assembly-plugin</artifactId><configuration> <!--不添加AssemblyId--> <appendAssemblyId>false</appendAssemblyId> <descriptorRefs> <!--配置打包的時(shí)候一并打包依賴jar--> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <!--入口類--> <mainClass>xxx.xxx.Main</mainClass> </manifest> </archive></configuration><executions> <execution> <id>make-assembly</id> <!--綁定生命周期--> <phase>package</phase> <goals> <!--執(zhí)行assembly --> <goal>assembly</goal> </goals> </execution></executions> </plugin>

打包SpringBoot 項(xiàng)目

方案一、

<plugins> <!--打包jar--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration><archive> <manifest> <addClasspath>true</addClasspath> <!--MANIFEST.MF 中 Class-Path 加入前綴--> <classpathPrefix>lib/</classpathPrefix> <!--jar包不包含唯一版本標(biāo)識(shí)--> <useUniqueVersions>false</useUniqueVersions> <!--指定入口類--> <mainClass>xxx.xxx.Application</mainClass> </manifest> <manifestEntries> <!--MANIFEST.MF 中 Class-Path 加入資源文件目錄--> <Class-Path>/resources</Class-Path> </manifestEntries></archive><outputDirectory>${project.build.directory}/dis</outputDirectory> </configuration> </plugin> <!--拷貝依賴 copy-dependencies--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions><execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dis/lib/ </outputDirectory> </configuration> </execution></executions> </plugin> <!--拷貝資源文件 copy-resources--> <plugin><artifactId>maven-resources-plugin</artifactId><executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <resources><resource> <directory>src/main/resources</directory></resource> </resources> <outputDirectory>${project.build.directory}/dis/resources</outputDirectory> </configuration> </execution></executions> </plugin> <!--spring boot repackage,依賴 maven-jar-plugin 打包的jar包 重新打包成 spring boot 的jar包--> <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration> <layout>ZIP</layout> <!--使用外部配置文件,jar包里沒(méi)有資源文件--> <addResources>true</addResources></configuration><executions> <execution> <goals> <goal>repackage</goal> </goals> </execution></executions> </plugin> </plugins> </build>

方案二

這里依賴assembly.xml 描述文件

<plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>false</appendAssemblyId> <descriptors><descriptor>assembly.xml</descriptor> </descriptors> <outputDirectory>${project.build.directory}/dist/</outputDirectory> </configuration> <executions> <execution><id>make-assembly</id><phase>package</phase><goals> <goal>single</goal></goals> </execution> </executions> </plugin> <!-- 打包成jar文件,并指定lib文件夾以及resources資源文件夾 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive><manifest> <mainClass>xxx.xxx.Application</mainClass> <!--依賴前綴--> <classpathPrefix>lib/</classpathPrefix> <addClasspath>true</addClasspath></manifest><manifestEntries> <Class-Path>resources/</Class-Path></manifestEntries> </archive> </configuration> </plugin></plugins>

assembly.xml

<assembly xmlns='http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd'> <id>distribution</id> <!--輸出格式 zip 最終結(jié)果生成zip --> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <!--設(shè)置需要輸出文件--> <fileSets> <fileSet> <directory>src/main/resources/</directory> <outputDirectory>/resources</outputDirectory> </fileSet> </fileSets> <dependencySets> <dependencySet> <!--依賴包的輸出目錄--> <outputDirectory>/lib</outputDirectory> <scope>runtime</scope> <excludes><exclude>${project.groupId}:${project.artifactId}</exclude> </excludes> </dependencySet> <dependencySet> <!--jar包的輸出目錄--> <outputDirectory>/</outputDirectory> <includes><include>${project.groupId}:${project.artifactId}</include> </includes> </dependencySet> </dependencySets></assembly>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 硅PU球场、篮球场地面施工「水性、环保、弹性」硅PU材料生产厂家-广东中星体育公司 | 重庆波纹管|重庆钢带管|重庆塑钢管|重庆联进管道有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 液氮罐_液氮容器_自增压液氮罐_杜瓦瓶_班德液氮罐厂家 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 中红外QCL激光器-其他连续-半导体连续激光器-筱晓光子 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 山东钢衬塑罐_管道_反应釜厂家-淄博富邦滚塑防腐设备科技有限公司 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 楼梯定制_楼梯设计施工厂家_楼梯扶手安装制作-北京凌步楼梯 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 |