本文介绍了如何使用Maven将Spring Boot项目打包成可执行的JAR文件,并将JAR文件与依赖库分离,以便在Docker容器中部署。文章涵盖了Maven配置、依赖管理、JAR打包以及Dockerfile的使用。
介绍了如何使用spring-boot-maven-plugin插件将Spring Boot应用程序打包为可执行的JAR或WAR存档文件。
通过使用maven-dependency-plugin插件,将项目依赖项复制到指定位置,实现了JAR文件和依赖库的分离。
介绍了如何创建Dockerfile文件,使用COPY命令将JAR文件和依赖库复制到容器中,并设置容器启动时的相关配置。
包括使用Docker Compose部署项目的方法、如何设置JVM参数以及防范被骗的提醒。
前言
Spring Boot 是一个非常流行的 Java 开发框架,它提供了很多便利的功能,例如自动配置、快速开发等等。
在使用 Spring Boot 进行开发时,我们通常会使用 Maven 或 Gradle 进行项目构建。
本文将为您介绍如何使用 Maven 将 Spring Boot 项目打包成可执行的 JAR 文件,并将 JAR 文件和依赖库分离,以便于在 Docker 容器中部署。
maven 依赖插件
spring-boot-maven-plugin
和
maven-dependency-plugin
的 Maven 配置。
spring-boot-maven-plugin
用于将 Spring Boot 应用程序打包为可执行的 JAR 或 WAR 存档文件,而
maven-dependency-plugin
用于将项目依赖项复制到指定位置。
spring-boot-maven-plugin
被配置为将应用程序打包为可执行的 ZIP 存档文件。
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<executable>trueexecutable>
<layout>ZIPlayout>
<jvmArguments>-Dfile.encoding=UTF-8jvmArguments>
<includes>
<include>
<groupId>nothinggroupId>
<artifactId>nothingartifactId>
include>
includes>
configuration>
plugin>
maven-dependency-plugin
被配置为将项目依赖项复制到
${project.build.directory}/lib
。
将 lib 依赖拷贝到 target 目录下
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-dependency-pluginartifactId>
<executions>
<execution>
<id>copyid>
<phase>packagephase>
<goals>
<goal>copy-dependenciesgoal>
goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
outputDirectory>
<excludeScope>providedexcludeScope>
configuration>
execution>
executions>
plugin>
maven-jar-plugin
被配置为将项目打包为 JAR 文件,并将项目依赖项复制到
${project.build.directory}/lib
。
此外,
maven-jar-plugin
还配置了 JAR 文件的
MANIFEST.MF
文件,其中包含了应用程序的主类和类路径,指定 jar 加载 lib 路径
启动类需要填写你项目中的启动类
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-jar-pluginartifactId>
<configuration>
<archive>
<manifest>
<mainClass>top.teainn.project.MyApplicationmainClass>
<addClasspath>trueaddClasspath>
<classpathPrefix>lib/classpathPrefix>
manifest>
archive>
configuration>
plugin>
在 jar 包中的
META-INF
中的
MANIFEST.MF
中可以看到依赖前面有
lib/
package 打包
打包完成后,可以看到 jar 和 lib 分离出来了
Dockerfile 文件
其中主要的是
COPY ${OUT_DIRECTORY}/lib /lib
,将外部目录中的 lib 复制到容器中的 lib
# 凉了的凉茶
# 设置jdk版本