解決spring-boot-maven-plugin插件打包,springboot啟動時報找不到主main問題


一:遇到的問題及解決方法

最近在搭建一個新項目時,使用spring-boot-maven-plugin插件打包,springboot項目在發布后啟動時遇到找不到主main問題。

遇到這個問題當時感覺本地直接idea里啟動springboot好好的,為什么用自動化發布工具發布后怎么就出現這個問題了呢?

就到線上打好的包解壓看MANIFEST.MF文件里的內容如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: spy
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_74

只有一些簡單的內容並沒有啟動類,主類什么的?所以報那個找不到主main就非常明確了。所以就懷疑是不是spring-boot-maven-plugin打包插件里些配置沒有指定導致的?

后來通過網上查詢與看官網的文檔還真是這個原因:

我們這個的原因的是由於在spring-boot-maven-plugin插件里沒有指定goal導致的:

出現在問題時的配置是這個樣的:

<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.4.RELEASE</version>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>

指定goal后解決問題對應的配置如下:

<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.4.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
修改goal后再去看MANIFEST.MF內容如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: spy
Start-Class: com.XX.Crm2cApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.1.4.RELEASE
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_74
Main-Class: org.springframework.boot.loader.JarLauncher

內容多出了,Main-Class和Start-Class至此遇到的問題解決了。

二:spring-boot-maven-plugin插件5種goal類型的說明:

spring-boot:repackage,最主要包一個goal。在mvn package之后,再次打包可執行的jar/war,同時保留mvn package生成的jar/war為.origin
spring-boot:run,運行Spring Boot應用
spring-boot:start,在mvn integration-test階段,進行Spring Boot應用生命周期的管理
spring-boot:stop,在mvn integration-test階段,進行Spring Boot應用生命周期的管理
spring-boot:build-info,生成Actuator使用的構建信息文件build-info.properties


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM