首页 > 其他分享 >Maven指令打包SpringBoot项目提示没有主清单文件

Maven指令打包SpringBoot项目提示没有主清单文件

时间:2023-04-28 14:12:45浏览次数:49  
标签:maven SpringBoot jar boot Maven Version spring 清单

Maven指令打包SpringBoot项目提示没有主清单文件
原文链接:https://blog.csdn.net/greedystar/article/details/86068314

项目打包为Jar后,通过java -jar xxxxx.jar运行时提示xxxxx.jar中没有主清单属性,如下:

打开jar包,META-INF目录下的MANIFEST.MF,内容如下:

  1. Manifest-Version: 1.0
  2. Archiver-Version: Plexus Archiver
  3. Built-By: greedystar
  4. Created-By: Apache Maven 3.2.5
  5. Build-Jdk: 1.8.0_181

我们发现这里没有主类等信息,是什么原因导致的呢?网上大多数资料指出需要在pom.xml中配置maven插件,如下:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. </plugin>
  7. </plugins>
  8. </build>

这种解决方案通常可以解决大部分问题,但这种方案只在使用 spring-boot-starter-parent 为 <parent/> 标签内容时才有效,当我们使用自定义的<parent/>节点时按如上所述的方式配置maven插件则是无效的,这是为什么呢?让我们一起看一看 spring-boot-starter-parent 中的配置。

spring-boot-starter-parent 中maven插件的配置如下:

  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. <executions>
  5. <execution>
  6. <goals>
  7. <goal>repackage</goal>
  8. </goals>
  9. </execution>
  10. </executions>
  11. <configuration>
  12. <mainClass>${start-class}</mainClass>
  13. </configuration>
  14. </plugin>

我们可以看到这里配置了主类信息以及一个重要的标签<goal>,对repackage的描述如下:

Repackages existing JAR and WAR archives so that they can be executed from the command line using  java -jar. 

看到这里我们就清楚了,当使用自定义的 parent 时,我们需要自行配置maven插件的<goal>属性,如下:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. <executions>
  7. <execution>
  8. <goals>
  9. <goal>repackage</goal>
  10. </goals>
  11. </execution>
  12. </executions>
  13. </plugin>
  14. </plugins>
  15. </build>

指定mvn clean package指令打包jar包后看一下清单文件,内容如下:

  1. Manifest-Version: 1.0
  2. Archiver-Version: Plexus Archiver
  3. Built-By: greedystar
  4. Start-Class: cn.bimart.scf.bc.tx.server.TxServerApplication
  5. Spring-Boot-Classes: BOOT-INF/classes/
  6. Spring-Boot-Lib: BOOT-INF/lib/
  7. Spring-Boot-Version: 2.1.1.RELEASE
  8. Created-By: Apache Maven 3.2.5
  9. Build-Jdk: 1.8.0_181
  10. Main-Class: org.springframework.boot.loader.JarLauncher

这样项目就打包成功了,通过java -jar也可以正确运行了。

标签:maven,SpringBoot,jar,boot,Maven,Version,spring,清单
From: https://www.cnblogs.com/sunny3158/p/17361950.html

相关文章

  • maven中切换国内源
    国外镜像下载包非常慢,于是使用国内阿里云的,找到~/.m2目录,但是不存在settings.xml,于是手动创建一个,然后贴入一个样例 <settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://mave......
  • Unknown run configuration type SpringBootApplicationConfigurationType;Servlet Ser
    UnknownrunconfigurationtypeSpringBootApplicationConfigurationType社区版的idea自己安装插件,去配置大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来沉......
  • 在我的mac mini上安装好maven后再次创建项目遇到同样的问题,再次记录一下
    默认生成的maven项目,使用mvnarchetype:generate按照提示生成的项目,使用mvncompile编译过后,mvnpackage,因为已经有jar的plugin了,java-jartarget/projct1.jar出现找不到主类,此时要配置pom.xml里面的maven-jar-plugin,方法是在下面添加配置段:<configuration><archive>......
  • maven本地配置规范
    关于私有仓库配置放在项目根pom.xml文件中<repositories><repository><id>internalrepository</id><name>Localrepository</name><url>https://xxx/artifactory/libs-snapshot-lo......
  • IDEA+Maven 打jar包
    IDEA+Maven打jar包原文链接:https://blog.csdn.net/qq_46416934/article/details/124146569IDEA+Maven打jar包(包涵依赖jar)最新修改以前写的打包方式可能看起来有些繁琐,这里给出进一步简洁的解决方案简单粗暴写在前面:这两天一直在整(gu)理(dao)IDEA用Maven打jar包,网上的教......
  • 将IDEA MAVEN项目打包成jar包的通用方法
    将IDEAMAVEN项目打包成jar包的通用方法原文链接:https://blog.csdn.net/qq_56964962/article/details/1255240021.找到左上角File->ProjectStructure,点击(中文:文件->项目结构)2.在弹出的界面中,点击Artifacts(中文:工件),点击内置页面的左上角的+号,选中第一个的第二个,点击 ......
  • java jar 没有主清单属性_Spring Boot jar中没有主清单属性的解决方法「建议收藏」
    javajar没有主清单属性_SpringBootjar中没有主清单属性的解决方法「建议收藏」原文链接:https://cloud.tencent.com/developer/article/2133065大家好,又见面了,我是你们的朋友全栈君。使用SpringBoot微服务搭建框架,在eclipse和Idea下能正常运行,但是在打成jar包部署或者直接......
  • Eclipse没有创建Maven项目入库的原因
    我首先参考了Eclipse历史版本下载和选择对应的java版本这篇文章,发现Eclipse2020-06的版本以后就不支持JDK8了。我想要下载Oxygen版本,但是没有找到入口,然后就准备下载2020-03版本,但是官网的下载速度很慢。所以我就去清华大学开源软件镜像站下载了eclipse-SDK-4.28M......
  • Maven的Mirror和Repository 的详细讲解
    1Repository(仓库) 1.1Maven仓库主要有2种:remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问localrepository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录1.2Remote Repository主要有3种:中央仓库:http://repo1.ma......
  • Maven中mirrors和repository的关系
    1.pom.xml里的repositories元素,里面可以包含多少repository(至少默认包含了中央仓库,该仓库总是在effective-pom里repositories元素的最后一个子元素),每个repository都有一个id(此id非常重要)。2.maven获取真正起作用的repository集合流程:首先会获取pom.xml里的repository......