Maven打包SpringBoot应用

本文介绍了一种简便的方法,通过Maven将SpringBoot应用快速打包成可直接运行的Jar包。具体步骤包括配置pom.xml文件、使用命令行进行打包及测试运行。

分享一个使用Maven将SpringBoot应用打包成Jar包的方法。

因为SpringBoot是内嵌TomCat服务器的,所以我们只需要把他打包成Jar包,就能直接运行上线了。

1.在pom.xml中需要如下配置:

<build>
   <finalName>Site</finalName>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>

这其中的finalName标签,是配置打包后的Jar包的名字,如果不写这一项,系统会自动为我们生成一个文件名。

2.使用DOS命令框,进入到该项目目录文件夹下,与pom.xml同级


进入到该路径之后,输入命令:

mvn clean package -Dmaven.test.skip=true

其中-Dmaven.test.skip=true是为了排除项目中的test包。

3.执行该命令并等待完成后,到项目文件夹中的target文件夹中,就可以看到打包好的jar包了。



4.测试

我们运行一下这个Jar包,测试能否运行成功



已经成功启动,到浏览器中看看效果


完美运行,打包和运行均成功。

### 问题分析与解决方案 在使用 Maven 打包 Spring Boot 项目时,常见的错误括插件版本不兼容、找不到主类(main class)、以及打包后的 JAR 结构异常(如含 BOOT-INF 文件夹)等问题。以下是具体的解决方法: #### 1. 插件版本不兼容问题 如果在打包过程中遇到类似于 `spring-boot-maven-plugin:3.2.0:resources` 的错误,这通常与插件版本有关。Spring Boot 的某些版本与特定的 Maven 插件版本可能存在兼容性问题。可以通过以下方式解决: - **降低 Maven Resources 插件版本**:尝试使用更稳定的版本,如 `3.1.0`,以避免新版本中可能存在的 bug。 - **降低 Spring Boot 版本**:如果当前使用的 Spring Boot 版本较新,可以考虑降级到一个更稳定的版本,以确保与现有插件兼容[^1]。 #### 2. 找不到主类(Main Class) 当项目中使用了 `spring-boot-maven-plugin` 插件但打包时提示 `Unable to find main class`,这通常是因为插件无法找到主类。解决方法括: - **确保主类存在并正确配置**:检查项目的主类是否含 `public static void main(String[] args)` 方法,并且该类被正确标注为 Spring Boot 应用程序的入口点。 - **在插件配置中明确指定主类**:在 `pom.xml` 文件中,为 `spring-boot-maven-plugin` 插件添加 `<mainClass>` 配置项,指定主类的全限定名。 ```xml <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.example.MainApplication</mainClass> </configuration> </plugin> ``` - **移除不必要的插件**:如果项目不是 Spring Boot 项目,则不需要 `spring-boot-maven-plugin` 插件。如果项目是一个多模块项目,确保只有需要的模块含该插件,避免父模块中错误地引入插件导致子模块打包失败[^2]。 #### 3. 打包后的 JAR 含 BOOT-INF 文件夹 当打包JAR 中出现 `BOOT-INF` 文件夹时,这通常是由于 `spring-boot-maven-plugin` 插件的作用。此插件会将依赖项打包到 `BOOT-INF/lib` 目录下,并将应用程序代码打包到 `BOOT-INF/classes` 目录下。如果你希望生成一个普通的 JAR 而不含 `BOOT-INF` 文件夹,可以考虑以下方法: - **使用 `maven-jar-plugin` 替代 `spring-boot-maven-plugin`**:如果你不需要 Spring Boot 的可执行 JAR 特性,可以在 `pom.xml` 文件中使用 `maven-jar-plugin` 插件来生成标准的 JAR 。 ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <mainClass>com.example.MainApplication</mainClass> </manifest> </archive> </configuration> </plugin> ``` - **自定义 `spring-boot-maven-plugin` 配置**:如果你仍然希望使用 `spring-boot-maven-plugin` 插件,但不想生成 `BOOT-INF` 文件夹,可以通过自定义插件配置来调整打包行为[^3]。 #### 4. 忽略测试类执行 在打包过程中,Maven 默认会执行所有测试类。如果你希望跳过测试类的执行,可以在打包命令中添加 `-Dmaven.test.skip=true` 参数: ```bash mvn clean package -Dmaven.test.skip=true ``` 此命令将跳过测试类的编译和执行,从而加快打包过程。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值