# 没有主清单属性

使用 java -jar xxx.jar运行spring-boot项目时,提示 没有主清单属性

注意看spring-boot-maven-plugin的配置,如下

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    <configuration>
        <mainClass>com.fengye.kafka.KafkaDemoApplication</mainClass>
        <skip>false</skip>
    </configuration>
    <executions>
        <execution>
            <id>repackage</id>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

如果<skip>true</skip>,实际上你告诉Maven在执行构建生命周期时跳过这个插件的运行。此插件负责将你的项目打包成一个可执行的JAR文件,其中包含了一个正确的清单文件(MANIFEST.MF)以及所有的项目依赖项。

在清单文件中,主类(Main Class)的信息是一个关键的元素,它告诉JVM运行哪一个类的main方法作为程序的入口点。如果spring-boot-maven-plugin被跳过了,那么这个清单文件可能不会被正确地生成,主类的信息也就不会被加入到清单文件中。这就是为什么当你尝试运行JAR文件时,你会看到 "没有主清单属性" 的错误。

所以,为了正确生成可执行的JAR文件,需要移除 true 配置,或者将其设置为 false。这样,在执行 mvn package 或者 mvn install 时,spring-boot-maven-plugin就会被执行,它会生成一个正确的可执行的JAR文件,包含了主类的信息以及所有的项目依赖项。