You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot(Maven)部署Railway后因Jar无主清单属性崩溃求助

解决Spring Boot部署Railway时"no main manifest attribute"错误

核心问题:插件未被实际执行

你的spring-boot-maven-plugin配置在<pluginManagement>块中,这个块仅用来管理插件的版本和默认配置,不会让Maven在构建过程中实际调用该插件。Spring Boot的repackage目标需要实际执行,才能生成包含主清单属性的可执行JAR包,这就是你出现报错的原因。

修复步骤

把spring-boot-maven-plugin从<pluginManagement>移到<build>下的直接<plugins>块中,不需要额外添加executions配置(因为spring-boot-starter-parent已经默认帮你配置了repackage目标的执行):

修改后的pom.xml构建部分:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${org.mapstruct.version}</version>
                        </path>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <!-- additional annotation processor required as of Lombok 1.18.16 -->
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok-mapstruct-binding</artifactId>
                            <version>0.2.0</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    <!-- 把spring-boot-maven-plugin移到这里,让Maven实际执行 -->
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

关于repackage配置的疑问

引入spring-boot-starter-parent后,它已经默认配置了spring-boot-maven-plugin的repackage执行逻辑,所以你不需要手动添加<executions>块。但前提是插件必须在<plugins>块中声明,而不是只在<pluginManagement>里"躺平"。

验证修复

本地执行mvn clean package,然后用jar tf target/liftoff_kcb_backend-0.0.1-SNAPSHOT.jar命令查看生成的JAR内容,检查META-INF/MANIFEST.MF文件,里面应该包含Main-Class和Start-Class属性,这就说明修复成功了。

内容的提问来源于stack exchange,提问作者Relix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:14:54