🍍踩坑: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.8</source>
                <target>1.8</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 文件中。

 

posted @ 2023-03-24 23:53  Java小白的搬砖路  阅读(255)  评论(0编辑  收藏  举报