一:遇到的问题及解决方法spring
最近在搭建一个新项目时,使用spring-boot-maven-plugin插件打包,springboot项目在发布后启动时遇到找不到主main问题。apache
遇到这个问题当时感受本地直接idea里启动springboot好好的,为何用自动化发布工具发布后怎么就出现这个问题了呢?springboot
就到线上打好的包解压看MANIFEST.MF文件里的内容以下:maven
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: spy
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_74ide
只有一些简单的内容并无启动类,主类什么的?因此报那个找不到主main就很是明确了。因此就怀疑是否是spring-boot-maven-plugin打包插件里些配置没有指定致使的?spring-boot
后来经过网上查询与看官网的文档还真是这个缘由:工具
咱们这个的缘由的是因为在spring-boot-maven-plugin插件里没有指定goal致使的:ui
出如今问题时的配置是这个样的:idea
<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后解决问题对应的配置以下:spa
<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