🍍踩坑:SpringBoot打jar包运行出现错误(没有主清单属性)
Posted Captain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了🍍踩坑:SpringBoot打jar包运行出现错误(没有主清单属性)相关的知识,希望对你有一定的参考价值。
我是使用Spring Initializr创建的SpringBoot项目,下面看下给我自动生成的pom文件,一切看着都那么正常~
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>$spring-boot.version</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>$spring-boot.version</version> <configuration> <mainClass>com.zhixi.SpringbootPage404Application</mainClass> <skip>true</skip> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
这样一看没有问题,使用IDEA写代码也是非常的顺利,但是有个事情,我将这个小项目打包成jar包想要通过:java -jar xxx.jar的方式运行,但是确报错了,正如标题所说:没有主清单属性~
说的也是,就算我他喵的项目再小,也不能打包后只有几百kb吧!一个项目随随便便一个jar包不得几MB啊,丢。
其实问题很简单,还是自己太菜了,先来说下解决方法,再来解释下这些参数的含义,去除:<skip>true</skip>,即可,它的作用是:告诉 Maven 在执行打包命令时跳过该插件
解释下这些配置含义:
这是一个Maven项目的配置文件: 主要包括两个部分:<dependencyManagement> 和 <build>。 <dependencyManagement> 部分主要用于管理项目中使用的依赖包,它包含一个 <dependencies> 标签,里面包含了一个 <dependency> 标签。 这里的 <dependency> 标签指定了项目使用的 org.springframework.boot:spring-boot-dependencies 依赖包的版本号为 $spring-boot.version,类型为 pom,作用域为 import。 意味着所有项目的依赖都会继承这个版本号,不需要在其他地方重复指定。 <build> 部分主要用于指定项目的构建方式和构建插件。 这里包含两个 <plugin> 标签,分别指定了 maven-compiler-plugin 和 spring-boot-maven-plugin 插件的配置信息。 1.maven-compiler-plugin 插件用于编译项目代码,这里指定了插件版本号为 3.8.1,并且配置了编译器的源代码版本和目标字节码版本都为 1.7,编码为 UTF-8。 2.spring-boot-maven-plugin 插件用于打包 Spring Boot 项目为可执行的 Jar 文件,这里同样指定了插件的版本号为 $spring-boot.version,并且配置了插件的一些参数。 比如指定了程序的入口类 com.zhixi.SpringbootPage404Application 并且设置了 skip 参数为 true,意味着在构建时不会执行该插件。 同时,在 <executions> 标签中还指定了一个 <execution> 标签,其中的 <goal> 标签指定了该插件的目标为 repackage,表示在打包时将依赖的 Jar 文件打包到生成的 Jar 文件中。
以上是关于🍍踩坑:SpringBoot打jar包运行出现错误(没有主清单属性)的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot + Junit 踩坑:部分 Service 注入失败