Springboot使用maven打包指定mainClass問(wèn)題
使用maven打包指定mainClass
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.xxx.XxxApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
SpringBoot Maven打包錯(cuò)誤及原因
1.org.springframework.boot:spring-boot-maven-plugin:2.2.1.RELEASE:repackage failed: Unable to find main class
2.找不到符號(hào)
Unable to find main class 問(wèn)題原因
如果使用SpringBoot打包插件如下
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
- 如果使用了這個(gè)打包插件,那么我們就必須有一個(gè)類(lèi)使用了@SpringBootApplication注解,否則打包的時(shí)候?qū)?huì)報(bào)repackage failed: Unable to find main class。
- 如果我們的項(xiàng)目打包只是一個(gè)普通的工具包,那么什么打包插件都不用加,maven使用默認(rèn)方式給我們打包,不用配置(了解maven默認(rèn)方式配置可網(wǎng)上查,網(wǎng)上很多)。
- 如果我們的項(xiàng)目是多級(jí)構(gòu)建(多Module)方式構(gòu)建,在打包的時(shí)候只是一個(gè)普通module,但是還是報(bào)repackage failed: Unable to find main class錯(cuò)誤,這個(gè)時(shí)候我們就查看module的父級(jí)項(xiàng)目是否加入了SpringBoot打包插件,因?yàn)榇虬寮矔?huì)繼承。所以建議不要為了方便而直接在父級(jí)項(xiàng)目加入SpringBoot的打包插件,而是那個(gè)Module需要打包為SpringBoot項(xiàng)目再加入SpringBoot打包插件。
- 關(guān)于maven默認(rèn)打包方式中(如下圖),package是以jar方式打包,所以沒(méi)有必要再pom.xml配置,除非我們只是打包為pom,我們可以配置<packaging>pom</packaging>,否則沒(méi)有必要配置。當(dāng)然多module的最頂級(jí)一定是pom打包方式。
一個(gè)項(xiàng)目有多個(gè)main.class,導(dǎo)致打包時(shí)maven不知道使用哪一個(gè)為主入口,這里我們需要設(shè)置
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.demo.springboot.DemoSbApplication</mainClass> </configuration> </plugin> </plugins> </build>
找不到符號(hào)問(wèn)題原因
這個(gè)原因一般是我們?cè)诖虬鼤r(shí),打包項(xiàng)目是打jar包,又引用了其他module。
而其他module沒(méi)使用jar方式打包,對(duì)于springboot來(lái)說(shuō)就是設(shè)置了<packaging>pom</packaging>
,這種肯定是找不到類(lèi),所以我們只要設(shè)置那個(gè)module的打包方式為<packaging>jar</packaging>
就可以了。注意:這里有可能引發(fā)Unable to find main class問(wèn)題。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java獲取時(shí)間差(天數(shù)差,小時(shí)差,分鐘差)代碼示例
這篇文章主要介紹了Java獲取時(shí)間差(天數(shù)差,小時(shí)差,分鐘差)代碼示例,使用SimpleDateFormat來(lái)實(shí)現(xiàn)的相關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11mybatis-flex實(shí)現(xiàn)鏈?zhǔn)讲僮鞯氖纠a
MyBatis-Flex它提供了一種鏈?zhǔn)讲僮鞣绞?本文主要介紹了mybatis-flex實(shí)現(xiàn)鏈?zhǔn)讲僮鞯氖纠a,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06通過(guò)實(shí)例解析spring對(duì)象生命周期
這篇文章主要介紹了通過(guò)實(shí)例解析spring對(duì)象生命周期,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Java 基礎(chǔ):string中的compareTo方法
這篇文章主要介紹了Java 基礎(chǔ):string中的compareTo方法,文章圍繞string中的compareTo方法的相關(guān)資料展開(kāi)文章詳細(xì)內(nèi)容,希望對(duì)待大家有所幫助2021-12-12Java同學(xué)找工作最懵圈的問(wèn)題:到底啥是分布式系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)?(推薦)
這篇文章主要介紹了分布式系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04