之前打包的项目今天打包突然发现在服务器上面运行不了了,查看日志发现提示了一行*.jar中没有主清单属性
然后就感觉挺奇怪的,之前还好好的,项目使用的是springboot,然后就查了一下资料,最后解决了问题,原因是同事修改了一个配置,记录一下解决办法:
出现这个问题先查看打包的模块pom.xml中打包的插件有没有 spring-boot-maven-plugin,如果没有需要加上下面的插件,列的完整的build,自己根据需要调整:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
如果已经有了该插件,那需要检查一下有没有配置下面的这个配置,如果有了需要把skip的true改为false,或则删除configuration的skip这个配置,至此问题解决:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>false</skip>
</configuration>
</plugin>
</plugins>
</build>
maven 插件配置设置
在项目中看到一个配置:

代码截图
如图中的这个:
<configuration><skip>true</skip></configuration>好奇它的作用是啥,测试了一下,当没有注释这个配置时,打包的时候生成的jar包结构如下:BOOT-INF下包括了项目结构包和lib(依赖的代码jar包),最外层还有一个启动加载器类包。

放开配置
而当注释掉这个配置时,结构如下:

注释配置
此时所有的依赖包和启动类加载器包都没有了,只有项目代码和配置。
百度了半天无果,便找度娘老公GOOGLE了一下,找到了相关的说明:https://pitest.org/quickstart/maven/,大概说明了这个注解的意思:
配置说明:您可以通过在配置部分上添加参数skip来跳过启动
作用:它在maven模块上非常有用:当您需要跳过整个模块时,您可以在插件的声明中添加这个设置来忽略它。
总结maven-springboot项目打包的过程中跳过jar包发布运行过程,所以只会生产本项目代码相关的包,而不会加入引入和启动类加载器等包,该jar包自然也不能运行。
















