SpringBoot 实现动态配置及项目打包部署上线
bigegpt 2025-07-02 18:26 4 浏览
一、动态配置文件
我们需要了解Spring动态指定配置文件的方式,来提高我们的部署效率。
1.1、概述
在实际企业开发中,开发环境、测试环境、生产环境通常采用不同的数据库等中间件的连接方式。如果此时我们按照目前的方式,只有一个application.yml配置文件,那么我们在不同环境下启动项目,都需要更改配置文件中的各种连接信息,虽然目前我们需要更改的连接地址少,但是每次去手动的更改这些信息,人工改的话是非常容易改错的。
Spring 提供了可以指定配置文件启动的方式,这样使得我们可以灵活的切换配置文件。
目前项目中也使用了这个指定配置文件的方式,只不过是在配置文件中指定的。代码如下图:
我们要做的是,在启动的时候指定。我们需要复制配置文件application.yml和application-druid.yml,命名为application-prod.yml和
application-druid-prod.yml,用来区分开发环境和生产环境,多个环境同理。
不指定配置文件,默认读取application.yml,我们开发的时候,可以直接启动项目。我们也可以分出一个dev的配置,这个看个人开发习惯。
1.2、启动方式
1.2.1、jar包启动
在区分出了生产环境的配置后,我们通过jar包方式启动项目的时候,增加参数指定,可以在启动项目的时候,指定配置文件。代码如下:
java -jar xxx.jar --spring.profiles.active=prod,druid-prod
注意:
指定多个配置文件,使用,号分割。
启动项目的时候指定了配置文件,在yml中配置的 spring.profiles.active 会失效
1.2.2、IDEA启动配置
- 在 IDEA 中配置profiles是非常简单的。
- 点击 IDEA 上方菜单Run
- 选择Edit Configurations...
- 选择Spring Boot下的 MyProjectServerApplication
- 找到Active profiles输入框,输入需要指定的配置文件后缀。例如:prod,druid-prod
- 点击OK即可。
如下图:
配置好后,使用IDEA启动项目,就会自动指定配置文件了。不需要的时候,直接删掉保存就可以了。
二、项目打包
我们在生产环境运行的时候,是使用jar的方式启动的。这里就需要我们将我们的项目打成jar,然后把项目运行起来。
项目结构如下:
本次构建的项目服务模块my-project-server依赖my-project-dependencies和my-project-common。所以需要先把这两个模块install安装到本地,以便my-project-server打包的时候,可以依赖到这两个模块。
项目打包的方式有多种,这里就简单介绍常用的两种方式。
2.1、IDEA打包
IDEA 打包方法:
- 点击右侧Maven菜单
- 双击打开要操作的模块
- 点击Lifecyle
- 双击需要进行的操作。例如:clean、install、package
如下图:
步骤:
- install安装my-project-dependencies
- install安装my-project-common
- package打包my-project-server
2.2、Maven命令打包
步骤还是跟上个方式的步骤一致,不一样的是使用Maven命令,这里借助bat的方式,一次完成。
在模块同济目录下创建一个bin目录后,创建批处理文件package.bat。代码如下:
cd ..
cd my-project-dependencies
call mvn install
cd ..
cd my-project-common
call mvn clean install -Dmaven.test.skip=true
cd ..
cd my-project-server
call mvn clean package -Dmaven.test.skip=true
cd ..
打包时,只需要执行bin目录下的package.bat文件即可完成打包。
-Dmaven.test.skip=true 意思为跳过测试。项目打包过程中,会执行我们编写的测试类。我们在日常项目开发过程中,或多或少会写测试类,这个参数就可以在打包的时候,跳过测试类的执行。
三、项目部署
打包完成后,会在项目的target目录下生成一个项目的jar包,这个就是我们最终运行的程序了。如图所示:
3.1、安装环境
打包完成后,我们会将程序上传至服务器进行运行,服务器需要安装Java运行环境。
1)、下载
下载地址:
https://www.oracle.com/java/technologies/downloads/#java8
找到Linux版本进行下载,可能需要登录,登录下载即可。
2)、创建目录
mkdir -p /usr/local/java
3)、上传文件至该目录
$ ls -al
total 144704
drwxr-xr-x 2 root root 4096 Oct 5 15:19 ./
drwxr-xr-x 14 root root 4096 Oct 5 15:18 ../
-rw-r--r-- 1 root root 148162542 Oct 5 15:19 jdk-8u341-linux-x64.tar.gz
4)、解压缩
tar -zxvf jdk-8u341-linux-x64.tar.gz
5)、配置系统变量
vim /etc/environment
添加如下语句
export JAVA_HOME=/usr/local/java/jdk1.8.0_341
export JRE_HOME=/usr/local/java/jdk1.8.0_341/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
6)、配置用户环境变量
vim /etc/profile
添加如下语句
export JAVA_HOME=/usr/local/java/jdk1.8.0_341
export JRE_HOME=/usr/local/java/jdk1.8.0_341/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
环境变量生效
source /etc/profile
7)、测试
$ java -version
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
出现正常的版本号,说明安装成功啦~
3.2、项目启动
创建目录
mkdir -p /usr/local/apps/my-project
将之前项目打包的jar包上传至该目录
启动项目有多种方式
前台启动一,这种方式启动,会在窗口上输出启动日志,如果关闭窗口或者Ctrl+C,会终止程序。
java -jar my-project-server-1.0.0-SNAPSHOT.jar
前台启动二,这种方式启动,也会在窗口上输出启动日志,如果Ctrl+C,程序依然正常运行。
java -jar my-project-server-1.0.0-SNAPSHOT.jar &
后台启动,这种方式,不会再窗口上输出启动日志,如果关闭窗口程序依然正常运行。推荐
nohup java -jar my-project-server-1.0.0-SNAPSHOT.jar &
3.3、最终效果
启动后,访问
http://IP:8899/sys-user/get/all,即可访问查询所有用户接口
原文链接:
blog.csdn.net/qq_41779565/article/details/127191733
相关推荐
- 如何使用Java API操作HDFS系统?(hdfs java api的常见环境准备?)
-
1.搭建项目环境打开Eclipse选择FileàNewàMavenProject创建Maven工程,选择“Createasimpleproject”选项,点击【Next】按钮,会进入“New...
- DataX写插件开发-集成阿里云RocketMQ
-
在上一期我们对datax进行了技术调研DataX数据异构、数据同步神器,这一次我们集成一个RocketMQ写插件,能够非常方便对将mysql数据同步到MQ中,下面来总结下具体步骤。1.下载datax源...
- 以SpringMVC+Shiro+Mybatis为核心开发的精简后台系统源码分享
-
项目说明源码获取方式:关注转发之后私信回复【源码】即可免费获取到以SpringMVC+Shiro+Mybatis为核心开发的精简后台基础系统。包含用户管理,角色管理,部门管理,权限管理,菜单管理,日志...
- 手把手教小伙伴们使用 Nginx 部署 TienChin 项目!
-
今天我就来手把手教小伙伴们部署TienChin项目,一起把这个项目跑起来,看看到底是个什么样的项目。小伙伴们知道,对于这种前后端分离的项目,我们在实际部署的时候,可以按照前后端分离的方式来部署,也...
- 推荐一款超棒的SpringCloud 脚手架项目
-
之前接个私活,在网上找了好久没有找到合适的框架,不是版本低没人维护了,在不就是组件相互依赖较高。所以我自己搭建一个全新spingCloud框架,里面所有组件可插拔的,集成多个组件供大家选择,喜欢哪个用...
- SpringCloud 微服务迁移到 Kubernetes 容器化完整流程
-
k8s容器部署流程具体步骤:第一步:熟悉SpringCloud微服务项目第二步:源代码编译构建第三步:构建项目镜像并推送到镜像仓库第四步:K8s服务编排第五步:部署服务所需的基础环境第六步:部署微服...
- SpringBoot 实现动态配置及项目打包部署上线
-
一、动态配置文件我们需要了解Spring动态指定配置文件的方式,来提高我们的部署效率。1.1、概述在实际企业开发中,开发环境、测试环境、生产环境通常采用不同的数据库等中间件的连接方式。如果此时我们按照...
- 3.5 源码安装ONOS1.3.0(源码包怎么安装)
-
ONOS是由ON.Lab使用Java及Apache实现发布的首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。近日笔者在学习ONOS的过程中写下了这篇文章,希望可以对刚接触ONOS的同学们...
- jenkins+gitlab 实现自动化部署(jenkins配置git自动部署)
-
目录1、安装jdk,要记住安装路径2、安装maven,要记住安装路径3、安装git,要记住安装路径4、安装gitlab5、安装jenkins(centos7)创建安装目录下载通用war包启动和关闭Je...
- CI&CD落地实践6-Jenkins接入maven构建后端springboot项目
-
前言在前面一篇《CI&CD落地实践5-Jenkins分布式环境搭建及多节点运行》中,我们介绍了如何在Windows及Linux系统上部署Jenkins从节点,本章节介绍如何在Jenkins创建mave...
- 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布
-
阅读目录:一、前言二、发布流程三、环境准备四、部署思路梳理五、三台机器上操作六、Git机器上操作七、Docker机器上操作八、Jenkins机器上操作九、上传JAVA项目代码到Git仓库十、Jenki...
- 微服务架构实战:使用Jenkins实现自动化构建
-
使用Jenkins实现自动化构建一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微...
- Jenkins 自动化部署实例讲解(jenkins自动化部署git 项目)
-
前言你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相信你应该是有过这种感触的。这种情况下,我一般会劝你了解一下Jenkins这个玩意...
- 多模块的微服务项目容器化与Git追踪发布记录
-
在使用了微服务后,一个项目往往由多个模块组成,而容器化发布的建议是单个容器尽量只运行单个进程。所以我们会把每个模块单独打包成镜像运行。如果每个模块都单独配置Dockerfile会让我们维护起来很麻烦。...
- 手把手教你使用 Jenkins+Docker 实现持续集成
-
作者:乐之终曲来源:https://blog.csdn.net/qq_37143673/对于Jenkins我只能用两个字形容,难用。就不过多吐槽了,本篇是基于docker环境的使用。1.安...
- 一周热门
- 最近发表
-
- 如何使用Java API操作HDFS系统?(hdfs java api的常见环境准备?)
- DataX写插件开发-集成阿里云RocketMQ
- 以SpringMVC+Shiro+Mybatis为核心开发的精简后台系统源码分享
- 手把手教小伙伴们使用 Nginx 部署 TienChin 项目!
- 推荐一款超棒的SpringCloud 脚手架项目
- SpringCloud 微服务迁移到 Kubernetes 容器化完整流程
- SpringBoot 实现动态配置及项目打包部署上线
- 3.5 源码安装ONOS1.3.0(源码包怎么安装)
- jenkins+gitlab 实现自动化部署(jenkins配置git自动部署)
- CI&CD落地实践6-Jenkins接入maven构建后端springboot项目
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)