SpringBoot 将 jar 包和 lib 依赖分离,dockerfile 构建镜像

编程入门 行业动态 更新时间:2024-10-22 18:26:17

SpringBoot 将 jar 包和 lib 依赖分离,dockerfile 构建<a href=https://www.elefans.com/category/jswz/34/1770431.html style=镜像"/>

SpringBoot 将 jar 包和 lib 依赖分离,dockerfile 构建镜像

前言

Spring Boot 是一个非常流行的 Java 开发框架,它提供了很多便利的功能,例如自动配置、快速开发等等。

在使用 Spring Boot 进行开发时,我们通常会使用 Maven 或 Gradle 进行项目构建。

本文将为您介绍如何使用 Maven 将 Spring Boot 项目打包成可执行的 JAR 文件,并将 JAR 文件和依赖库分离,以便于在 Docker 容器中部署。

maven 依赖插件

spring-boot-maven-pluginmaven-dependency-plugin 的 Maven 配置。

spring-boot-maven-plugin 用于将 Spring Boot 应用程序打包为可执行的 JAR 或 WAR 存档文件,而 maven-dependency-plugin 用于将项目依赖项复制到指定位置。

spring-boot-maven-plugin 被配置为将应用程序打包为可执行的 ZIP 存档文件。

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><executable>true</executable><layout>ZIP</layout><!--解决windows命令行窗口中文乱码--><jvmArguments>-Dfile.encoding=UTF-8</jvmArguments><!--这里是填写需要包含进去的jar,必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来如果没有则nothing ,表示不打包依赖 --><includes><include><groupId>nothing</groupId><artifactId>nothing</artifactId></include></includes></configuration>
</plugin>

maven-dependency-plugin 被配置为将项目依赖项复制到 ${project.build.directory}/lib

lib 依赖拷贝到 target 目录下

<!--拷贝依赖到jar外面的lib目录-->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><!--指定的依赖路径--><outputDirectory>${project.build.directory}/lib</outputDirectory><excludeScope>provided</excludeScope></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.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><mainClass>top.teainn.project.MyApplication</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest></archive></configuration>
</plugin>

jar 包中的 META-INF 中的 MANIFEST.MF 中可以看到依赖前面有 lib/

package 打包

打包完成后,可以看到 jarlib 分离出来了

Dockerfile 文件

其中主要的是 COPY ${OUT_DIRECTORY}/lib /lib,将外部目录中的 lib 复制到容器中的 lib

# 凉了的凉茶# 设置jdk版本
FROM java:8# 设置我们的个人信息,大家根据需求随便写
MAINTAINER daqi <daqi_email@163># 这两行是设置我们容器内的时间以及jvm的时间(默认不是GMT)
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone#复制依赖 jar
COPY ${OUT_DIRECTORY}/lib /lib# 前面的xxxxxx是我们上传的jar包名称,后面的是我们新命名的jar包
ADD Esurvey-backend-1.1.1.jar springboot.jar
# 执行我们的jar包,xxx是上面刚命名的新名字
# CMD java -jar springboot.jar# 镜像启动成为容器后,对外暴露的端口
EXPOSE 9996# Image创建容器时的初始化内存,最大内存,及启动时使用的profile. -c为清除以前启动的数据
# 依赖默认访问本目录下的 lib
ENTRYPOINT ["java","-Xms256m","-Xmx256m","-jar","/springboot.jar","--spring.profiles.active=prod","-c"]

其他

之后使用 Dockerfile 以及 docker-compose 部署项目可查看这篇博客

使用 docker-compose 部署 SpringBoot 项目 & nginx 部署前端

更多推荐

SpringBoot 将 jar 包和 lib 依赖分离,dockerfile 构建镜像

本文发布于:2023-11-16 19:48:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1633982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:镜像   jar   SpringBoot   dockerfile   lib

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!