天天看點

解決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内容如下:      

Start-Class: com.XX.Crm2cApplication

Spring-Boot-Classes: BOOT-INF/classes/

Spring-Boot-Lib: BOOT-INF/lib/

Spring-Boot-Version: 2.1.4.RELEASE

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

繼續閱讀