解决springboot项目打包没有主清单

本文详细介绍了如何在pom文件中配置Maven插件,以实现项目的源代码打包和SpringBoot应用的重新打包。通过添加maven-source-plugin插件,可以将源代码打包成jar文件;而spring-boot-maven-plugin插件则用于将SpringBoot应用重新打包,并配置了包括主类、系统依赖包含及Fork等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pom文件添加:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- spring boot -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <mainClass>com.xxx.xxx.xxx.prd.WebApiApplication</mainClass>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

 

### 解决Spring Boot项目中缺少主清单属性的方法 当遇到`jar中没有主清单属性`错误时,表明构建过程中未能正确设置必要的清单条目。为了确保Spring Boot应用能够正常启动并运行,必须保证JAR文件中的MANIFEST.MF文件包含了必需的清单属性。 #### 配置Maven打包插件 通过调整项目的pom.xml文件来配置Spring Boot Maven Plugin,可以自动为生成的可执行JAR添加所需的清单属性: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 上述XML片段定义了`spring-boot-maven-plugin`插件,并指定了版本号和目标操作。这将使得每次mvn package命令被执行时都会触发重新打包过程,在此期间会自动生成带有适当清单条目的最终制品[^1]。 #### 手动指定清单属性 如果希望更精确地控制哪些具体属性被写入到manifest中,则可以在POM文件内进一步定制化配置如下所示: ```xml <configuration> <archive> <manifestEntries> <Main-Class>com.example.SpringBootStarterApplication</Main-Class> <Start-Class>com.example(SpringBootStarterApplication</Start-Class> <Class-Path>.</Class-Path> </manifestEntries> </archive> </configuration> ``` 这里特别强调了两个重要的清单键值对——`Main-Class`用于指示Java虚拟机哪个类作为应用程序入口;而`Start-Class`则是Spring Boot特有的属性,用来定位包含main()方法的实际实现类[^2]。 #### 创建正确的入口类结构 除了确保打包工具按预期工作外,还需要确认源码本身遵循了Spring Boot的最佳实践模式。例如,创建一个带@SpringBootApplication解的应用程序入口类是非常常见的做法: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootStarterApplication { public static void main(String[] args) { SpringApplication.run(SpringBootStarterApplication.class, args); } } ``` 这段代码展示了如何声明一个简单的Spring Boot应用程序入口点,它负责引导整个上下文初始化流程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值