xxxxx-0.0.1-SNAPSHOT.jar中没有主清单属性

在使用idea快速创建的Spring Boot项目时,使用默认生成的pom.xml里自带的插件进行打包。在使用java -jar运行jar包时会出现 xxxxx-0.0.1-SNAPSHOT.jar中没有主清单属性

默认生成的pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <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>
        </plugin>
    </plugins>
</build>

打出的jar包解压后是这个目录
在这里插入图片描述
缺少了BOOT-INF这个文件夹及其里面的文件,并且MANIFEST.MF文件内容也不对

错误MANIFEST.MF内容

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Administrator
Created-By: Apache Maven 3.5.3
Build-Jdk: 1.8.0_181

原因是jar包中的META-INF文件夹下的MANIFEST.MF文件缺少配置

而这个MANIFEST.MF就是一个清单文件。

想要打出可以直接部署的jar包需要在pom文件上的maven插件更新为这么一段配置

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

再打出来的jar包就变成了这样的目录结构

在这里插入图片描述

最终生成的MANIFEST.MF

Manifest-Version: 1.0
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Archiver-Version: Plexus Archiver
Built-By: Administrator
Start-Class: com.dyh.SpringbootTestApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.3.2.RELEASE
Created-By: Apache Maven 3.5.3
Build-Jdk: 1.8.0_181
Main-Class: org.springframework.boot.loader.JarLauncher

这样打成的jar包就可以通过java -jar 命令直接运行项目

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值