当我们在执行 Spring Boot JAR 文件时候,可能会遇到 “jar中没有主清单属性”(no main manifest attribute)错误。这是因为我们在 MANIFEST.MF
文件中缺少了 Main-Class
元数据属性的声明,该文件位于 META-INF
文件夹下,用压缩工具打开jar包可以看见。
1、添加插件
在 pom.xml 中添加 plugin
标签,并在 plugin
下声明 Main-Class
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.baeldung.demo.DemoApplication</mainClass>
<layout>JAR</layout>
</configuration>
</plugin>
</plugins>
2、Maven Plugin Execution Goal
在上图的 configuration 标签下添加 repackage goal
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
3、Maven properties 和内联命令 Execution Goal
在 pom.xml
文件的 properties
标签中添加 start-class
属性
<properties>
<start-class>com.baeldung.demo.DemoApplication</start-class>
</properties>
使用 Maven 内联命令 spring-boot:repackage
来构建 jar
mvn package spring-boot:repackage