【问题】----运行jar命令提示没有主清单属性
短信预约 -IT技能 免费直播动态提醒
一、原因
打包的方式不对,打包的时候少了文件**
二、解决办法
在pom.xml中添加/修改maven打包依赖:
<build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> <executions> <execution> <goals> <goal>repackagegoal> goals> execution> executions> plugin> plugins>build>
三、错误实例
<dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> dependency>dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> plugin> plugins> build>
四、原因分析
1.出错现象
2.主清单属性
主清单属性是jar包中MANIFEST.MF文件中的属性,这里主要造成问题的属性是Main-Class: com.tl.SecurityAPP文件位置在我们我打的jar包下META-INF文件夹下
3.描述
当我们将打包插件依赖删除后会发现项目照样可以打包,由此可见我们出错是因为使用了原始maven打包,并没有使用我们添加的打包插件打包。
没有使用打包插件时在项目中打开MANIFEST.MF文件会发现有Main-Class属性,当打开jar包会发现里面的MANIFEST.MF并没有此属性。
使用打包插件后发现MANIFEST.MF有此属性,且多了xxx.jar.original的文件而且jar包结构也不一样。
四、打包依赖分析
<build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> <executions> <execution> <goals><goal>repackagegoal> goals> execution> executions> plugin> plugins> build>
1. 说明
<extensions/> <executions> <execution> <id/> <phase/> <goals/> <inherited/> <configuration/> execution>executions>
对比出错依赖配置我们会发现多了点:
<executions> <execution> <goals> <goal>repackagegoal> goals> execution> executions>
repackage有啥用呢?
1.将原始Maven打包形成的jar包进行重新打包,包含应用类文件、配置文件、应用所依赖的jar包、Springboot启动相关类(loader等)。
2.将原始Maven打包形成的jar包备份,并重命名为xxxxxx.jar.original,所以我们发现使用打包插件比原始打包方式多了此文件。
使用打包插件打包后我们会发现jar包可以启动了
来源地址:https://blog.csdn.net/zhuguanbo/article/details/129024091
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341