SpringBoot项目打包可运行

本文介绍了解决SpringBoot项目打包成jar后运行时出现找不到主清单属性的问题,通过配置spring-boot-maven-plugin插件指定主类入口,确保正确打包并运行。

在SpringBoot项目中我们打包直接运行jar文件,有时候会出现xxx.jar 运行报错:找不到主清单属性,出现此问题是因为在打包的时候没有把主类打进去,需要我们通过插件指定主类入口 在插件中添加SpringBoot的打包插件

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.2.2.RELEASE</version>
                <configuration>
                    <!--指定程序的入口主类-->
                    <mainClass>com.old.bigdata.ConsolidateDB</mainClass>
                    <fork>true</fork>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

添加好插件后可以直接使用maven命令package命令进行打包,jar文件会生成在target目录中,在命令行中就可以使用java -jar xxx.jar命令运行jar包

### 打包并本地运行Spring Boot项目 #### 修改`pom.xml`文件配置 为了使Spring Boot应用程序能够被打包成WAR文件而不是默认的JAR文件,需要调整Maven项目的`pom.xml`文件。这涉及到更改打包方式以及移除内嵌的Tomcat服务器依赖项[^4]。 ```xml <packaging>war</packaging> <dependencies> <!-- 移除内置Tomcat --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies> ``` #### 注册启动类 为了让外部容器识别到应用的入口点,在主应用程序类中继承`SpringBootServletInitializer`类,并覆盖其`configure()`方法来指定额外的应用上下文配置。 ```java import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } } ``` #### 使用命令行工具构建War包 完成上述设置之后,可以通过Maven命令创建可部署于任何支持Servlet标准的Web服务器上的WAR档案文件。此过程同样适用于生成独立式的JAR文件: ```bash mvn clean package -Dmaven.test.skip=true ``` 该指令会清理旧版本的目标目录(`clean`)、编译源码(`package`)并且跳过单元测试阶段以加快速度(-Dmaven.test.skip=true)。 #### 运行已打包的应用程序 对于JAR形式分发的应用来说,可以直接利用Java虚拟机加载执行;而对于WAR格式,则需将其放置至像Apache Tomcat这样的Servlet容器内部再启动服务[^3]。 针对JAR包: ```bash java -jar target/your-application.jar ``` 对于WAR包则应按照目标环境的具体操作说明来进行部署,通常是在Tomcat或其他兼容容器中的webapps路径下解压WAR文件即可自动部署。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值