沈阳做网站开发公司,电气工程WordPress模板,不用模板 网站,图表生成网站前言
Spring Boot 是一个非常流行的 Java 开发框架#xff0c;它提供了很多便利的功能#xff0c;例如自动配置、快速开发等等。
在使用 Spring Boot 进行开发时#xff0c;我们通常会使用 Maven 或 Gradle 进行项目构建。
本文将为您介绍如何使用 Maven 将 Spring Boot …前言
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 存档文件。
plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexecutabletrue/executablelayoutZIP/layout!--解决windows命令行窗口中文乱码--jvmArguments-Dfile.encodingUTF-8/jvmArguments!--这里是填写需要包含进去的jar必须项目中的某些模块会经常变动那么就应该将其坐标写进来如果没有则nothing 表示不打包依赖 --includesincludegroupIdnothing/groupIdartifactIdnothing/artifactId/include/includes/configuration
/pluginmaven-dependency-plugin 被配置为将项目依赖项复制到 ${project.build.directory}/lib。
将 lib 依赖拷贝到 target 目录下
!--拷贝依赖到jar外面的lib目录--
plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-dependency-plugin/artifactIdexecutionsexecutionidcopy/idphasepackage/phasegoalsgoalcopy-dependencies/goal/goalsconfiguration!--指定的依赖路径--outputDirectory${project.build.directory}/lib/outputDirectoryexcludeScopeprovided/excludeScope/configuration/execution/executions
/pluginmaven-jar-plugin 被配置为将项目打包为 JAR 文件并将项目依赖项复制到 ${project.build.directory}/lib。
此外maven-jar-plugin 还配置了 JAR 文件的 MANIFEST.MF 文件其中包含了应用程序的主类和类路径指定 jar 加载 lib 路径 启动类需要填写你项目中的启动类 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdconfigurationarchivemanifestmainClasstop.teainn.project.MyApplication/mainClassaddClasspathtrue/addClasspathclasspathPrefixlib//classpathPrefix/manifest/archive/configuration
/plugin在 jar 包中的 META-INF 中的 MANIFEST.MF 中可以看到依赖前面有 lib/ package 打包 打包完成后可以看到 jar 和 lib 分离出来了 Dockerfile 文件
其中主要的是 COPY ${OUT_DIRECTORY}/lib /lib将外部目录中的 lib 复制到容器中的 lib
# 凉了的凉茶# 设置jdk版本
FROM java:8# 设置我们的个人信息大家根据需求随便写
MAINTAINER daqi daqi_email163.com# 这两行是设置我们容器内的时间以及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.activeprod,-c]其他
之后使用 Dockerfile 以及 docker-compose 部署项目可查看这篇博客
使用 docker-compose 部署 SpringBoot 项目 nginx 部署前端