这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」
SpringBoot 项目开发完成后,需要将项目打包并部署到服务器中对外提供服务,使用 Maven 就能方便快捷的将程序打成可以部署的包。
1. SpringBoot 项目打包
1.1 使用 Maven 命令打包
因为 SpringBoot 中默认使用 Maven 管理项目,且自带了spring-boot-maven-plugin
打包插件,因此在打包项目时可以直接使用 Maven 的生命周期命令对项目打包。
IDEA 中,可以在项目右侧 Maven 栏中找到 Lifecycle(生命周期),执行其中的阶段来完成项目的清理、编译、打包、安装和部署。
或者也可以使用 Maven 命令来执行相关操作:
mvn clean
:清空maven输出(打包内容)mvn compile
:项目编译mvn package
:项目打包mvn install
:项目打包并且放入maven仓库mvn deploy
:项目部署mvn clean install
:清理并打包安装到本地
执行成功后,在项目目录下的/target
目录下生成项目的 jar 包文件,文件名是项目名-版本信息.jar。
1.2 打包产物
SpringBoot 项目使用 Maven 打包后的 Jar 包产物命名方式是由项目的 pom.xml 文件定义的,其中的 <artifactId>
项目id和 <version>
版本信息共同组成打包文件名称。
如果想要自定义生成文件名,可以修改项目属性或者在 <build>
标签中使用 <finalNmae>
定义生成名称。
产物文件夹/target
中文件有demo.jar
和demo.jar.original
,其他文件夹则包含了项目源文件、编译后的文件、maven相关信息以及测试和报告等信息。
demo.jar.original
:项目的Jar包,只包含当前项目文件,不包括依赖信息demo.jar
:项目完整Jar包,包括相关依赖信息,可以直接执行
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>