Maven指令打包SpringBoot項(xiàng)目提示沒有主清單文件問題
Maven指令打包SpringBoot項(xiàng)目提示沒有主清單文件
項(xiàng)目打包為Jar后
通過java -jar xxxxx.jar運(yùn)行時(shí)提示xxxxx.jar中沒有主清單屬性,如下:
打開jar包
META-INF目錄下的MANIFEST.MF,內(nèi)容如下:
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: greedystar Created-By: Apache Maven 3.2.5 Build-Jdk: 1.8.0_181
我們發(fā)現(xiàn)這里沒有主類等信息,是什么原因?qū)е碌哪兀?/p>
網(wǎng)上大多數(shù)資料指出需要在pom.xml中配置maven插件,如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
這種解決方案通??梢越鉀Q大部分問題,但這種方案只在使用 spring-boot-starter-parent 為 <parent/> 標(biāo)簽內(nèi)容時(shí)才有效,當(dāng)我們使用自定義的<parent/>節(jié)點(diǎn)時(shí)按如上所述的方式配置maven插件則是無效的,這是為什么呢?讓我們一起看一看 spring-boot-starter-parent 中的配置。
spring-boot-starter-parent 中maven插件的配置如下:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <mainClass>${start-class}</mainClass> </configuration> </plugin>
我們可以看到這里配置了主類信息以及一個(gè)重要的標(biāo)簽<goal>,對repackage的描述如下:
Repackages existing JAR and WAR archives so that they can be executed from the command line using java -jar.
看到這里我們就清楚了,當(dāng)使用自定義的 parent 時(shí),我們需要自行配置maven插件的<goal>屬性,如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
指定mvn clean package指令打包jar包后看一下清單文件
內(nèi)容如下:
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: greedystar Start-Class: cn.bimart.scf.bc.tx.server.TxServerApplication Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Spring-Boot-Version: 2.1.1.RELEASE Created-By: Apache Maven 3.2.5 Build-Jdk: 1.8.0_181 Main-Class: org.springframework.boot.loader.JarLauncher
這樣項(xiàng)目就打包成功了,通過java -jar也可以正確運(yùn)行了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java比較兩個(gè)list是否相同equals的代碼詳解
在本篇文章里小編給大家分享的是關(guān)于java比較兩個(gè)list是否相同equals的代碼詳解,有需要的朋友們可以參考學(xué)習(xí)下。2020-02-02MybatisPlus實(shí)現(xiàn)對象嵌套關(guān)聯(lián)查詢一對多List集合查詢
這篇文章主要介紹了MybatisPlus實(shí)現(xiàn)對象嵌套關(guān)聯(lián)查詢一對多List集合查詢,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Java微信公眾平臺開發(fā)(4) 回復(fù)消息的分類及實(shí)體的創(chuàng)建
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺開發(fā)第四步,回復(fù)消息的分類及實(shí)體的創(chuàng)建,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Java基礎(chǔ)之switch分支結(jié)構(gòu)詳解
這篇文章主要介紹了Java基礎(chǔ)之switch分支結(jié)構(gòu)詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很大的幫助,需要的朋友可以參考下2021-05-05Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程
這篇文章主要介紹了Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程,通常Java中的AOP都是利用Spring框架中造好的輪子來開發(fā),而本文則關(guān)注于Java本身AOP的設(shè)計(jì)模式實(shí)現(xiàn),需要的朋友可以參考下2016-04-04