java有meta主清单属性_Springboot jar主清单属性丢失解决方案

在开发中,用到springboot项目,当打包后部署运行时,出现了这个问题,网上搜了好多,又是加META-INF配置,又是加啥的,感觉springboot这么方便,这种问题怎么可能会搞这么复杂,于是研究了一下:

首先我们项目要依赖springboot的parent或者引入spring-boot-dependencies

13e5297b4c4d8602b55c6e9d287d5b77.png

或者

35193ef0ce1d41ffca985e9c9444e1bc.png

这样就将springboot的pom文件导入了我们的项目,然后还要再要运行的jar包中写入插件:

a24c41d876633f892a48b69428f213e5.png

当使用继承spring-boot-starter-parent时,就会出现标志,表示是继承自父类的,然后我们点到spring-boot-starter-parent的pom文件中,查看插件部分:

org.springframework.boot

spring-boot-maven-plugin

repackage

repackage

${start-class}

maven-shade-plugin

package

shade

META-INF/spring.handlers

META-INF/spring.factories

META-INF/spring.schemas

${start-class}

org.springframework.boot

spring-boot-maven-plugin

2.1.12.RELEASE

true

true

*:*

META-INF/*.SF

META-INF/*.DSA

META-INF/*.RSA

注意到里面有一个${start-class}变量,这个变量在parent的pom文件中并没有定义,那么我们就在自己要打jar包运行的模块定义这个变量:

df0097da749ef40f6ad844fbb7262f73.png

然后再打包,就可以直接通过java -jar *.jar 运行项目了

如果不是继承自parnetxml,而是选择第一种,导入dependencies的方式:

412255c88b27c50874ca6b58c733e749.png

那么就要改一下前面的spring-boot-maven-plugin插件,

c9c51eef147720b3e936cd80000433f4.png

我们需要指定打包路径的main方法,这样就可以直接打包通过 java -jar *.jar的方式运行了

重要的是一定要定义start-class变量

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值