当我们完成一个 SpringBoot 项目之后,想打成一个 jar 包,直接使用
java -jar xxx.jar运行
如出现如下问题,说明在我们 jar包内,没有正确的生成 MANIFEST.MF文件
no main manifest attribute in xxx.jar
我们可以解压出 jar包查看 MANIFEST.MF,内容应该大致都如下:
Manifest-Version: 1.0
Created-By: Maven Archiver 3.4.0
Build-Jdk-Spec: 11
正确的情况下应该需要包含一些启动类的以及一些 SpringBoot的版本信息
看到很多网友的解决办法如下:
<packaging>jar</packaging>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
只需添加这两个即可解决,但是在我这却不行,打开MANIFEST.MF依然没有启动类以及一些 SpringBoot的版本信息
如果跟我一样,则可以尝试下面方式
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>SpringBoot版本</version>
<configuration>
<mainClass>主类全路径</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>Java版本</source>
<target>Java版本</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
只需要在 pom.xml 里面添加这个 plugin 即可,下方是正确的 MANIFEST.MF文件内容:
Manifest-Version: 1.0
Created-By: Maven Archiver 3.4.0
Build-Jdk-Spec: 11
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.xxx.Application
Spring-Boot-Version: 2.2.6.RELEASE
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/

5175

被折叠的 条评论
为什么被折叠?



