使用 Maven 打包 SpringBoot 项目

2,324 阅读2分钟

这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战

SpringBoot 项目开发完成后,需要将项目打包并部署到服务器中对外提供服务,使用 Maven 就能方便快捷的将程序打成可以部署的包。

1. SpringBoot 项目打包

1.1 使用 Maven 命令打包

因为 SpringBoot 中默认使用 Maven 管理项目,且自带了spring-boot-maven-plugin打包插件,因此在打包项目时可以直接使用 Maven 的生命周期命令对项目打包。

IDEA 中,可以在项目右侧 Maven 栏中找到 Lifecycle(生命周期),执行其中的阶段来完成项目的清理、编译、打包、安装和部署。

image.png

或者也可以使用 Maven 命令来执行相关操作:

  • mvn clean:清空maven输出(打包内容)
  • mvn compile:项目编译
  • mvn package:项目打包
  • mvn install:项目打包并且放入maven仓库
  • mvn deploy:项目部署
  • mvn clean install:清理并打包安装到本地

执行成功后,在项目目录下的/target目录下生成项目的 jar 包文件,文件名是项目名-版本信息.jar。

image.png

1.2 打包产物

SpringBoot 项目使用 Maven 打包后的 Jar 包产物命名方式是由项目的 pom.xml 文件定义的,其中的 <artifactId> 项目id和 <version> 版本信息共同组成打包文件名称。

如果想要自定义生成文件名,可以修改项目属性或者在 <build> 标签中使用 <finalNmae> 定义生成名称。

产物文件夹/target中文件有demo.jardemo.jar.original,其他文件夹则包含了项目源文件、编译后的文件、maven相关信息以及测试和报告等信息。

  • demo.jar.original:项目的Jar包,只包含当前项目文件,不包括依赖信息
  • demo.jar:项目完整Jar包,包括相关依赖信息,可以直接执行

image.png

2 打包常见问题

2.1 Maven 打包普通 Web 项目

使用 Maven 打包普通的 JavaWeb 项目时,可以直接使用SpringBoot自带的Maven插件打包项目,并最终生成打包产物。

2.2 Maven 编译 Eureka 项目时提示缺少插件

Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project eureka: Input length = 1 -> [Help 1]

该编译错误是因为缺少相关 Maven 插件信息,如错误信息中提示,plugins标签里面缺少maven-resources-plugin依赖,只需要在 pom.xml 文件中引入插件信息。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2/version>
</plugin>