SpringBoot no main manifest attribute (maven)

运行我的 jar 文件时:java -jar target/places-1.0-SNAPSHOT.jar

我收到下一个错误:

没有主清单属性,在目标/地点-1.0-快照中.jar

包含:pom.xmlspring-boot-maven-plugin

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.places.Main</mainClass>
    </configuration>
</plugin>

我还尝试创建一个文件并指定类,但它没有帮助。MANIFEST.MF

此外,我还尝试了:

<properties>
      <!-- The main class to start by executing "java -jar" -->
      <start-class>com.places.Main</start-class>
</properties>

主类:

@SpringBootApplication
public class Main {
    public static void main(String[] args) throws InterruptedException {
        SpringApplication.run(Main.class,args);
    }
}

任何想法我还能尝试什么?


答案 1

尝试将目标添加到执行目标。repackage

否则,您需要将插件显式调用为 .mvn package spring-boot:repackage

添加目标后,您只需调用 。mvn package

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.places.Main</mainClass>
    </configuration>

    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

答案 2

Maven 生命周期阶段,Jar 存档由 Spring Boot Maven 插件增强,原始 jar 文件(应使用标准 maven-jar-plugin 构建)替换为增强的可执行 jar。package

因此,在构建模块时,您必须自己发布目标:spring-boot:repackage

mvn package spring-boot:repackage

或者在插件配置中显式添加:goal

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.places.Main</mainClass>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

您可以在官方文档中找到有关Spring Boot Maven插件重新打包目标的更多详细信息。


推荐