springboot实现动态配置及项目打包部署上线(代码片段)

微枫Micromaple 微枫Micromaple     2023-04-06     559

关键词:

写在前面

🍁个人主页:微枫Micromaple

✨本期专栏:《0到1项目搭建》欢迎订阅学习~

📌源码获取:GitCodeGitHub码云Gitee 持续更新中,别忘了 star 喔~

本文讲解的是如何使用Spring动态配置文件,实现不同环境不同配置,灵活切换配置文件;以及讲述了如何使用 Maven 打包,然后上传至Linux服务器进行部署。(PS:如果你是新手,可以跟着系列专栏的框架搭建先动手把项目搭建起来,然后在结合本期内容继续深入学习,这样会有更好的效果。)

目录

一、动态配置文件

我们需要了解Spring动态指定配置文件的方式,来提高我们的部署效率。

1.1、概述

在实际企业开发中,开发环境测试环境生产环境通常采用不同的数据库等中间件的连接方式。如果此时我们按照目前的方式,只有一个application.yml配置文件,那么我们在不同环境下启动项目,都需要更改配置文件中的各种连接信息,虽然目前我们需要更改的连接地址少,但是每次去手动的更改这些信息,人工改的话是非常容易改错的。

Spring 提供了可以指定配置文件启动的方式,这样使得我们可以灵活的切换配置文件。

目前项目中也使用了这个指定配置文件的方式,只不过是在配置文件中指定的。代码如下图:

我们要做的是,在启动的时候指定。我们需要复制配置文件application.ymlapplication-druid.yml,命名为application-prod.ymlapplication-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启动配置

  1. 在 IDEA 中配置profiles是非常简单的。
  2. 点击 IDEA 上方菜单Run
  3. 选择Edit Configurations...
  4. 选择Spring Boot下的 MyProjectServerApplication
  5. 找到Active profiles输入框,输入需要指定的配置文件后缀。例如:prod,druid-prod
  6. 点击OK即可。

如下图:


配置好后,使用IDEA启动项目,就会自动指定配置文件了。不需要的时候,直接删掉保存就可以了。

二、项目打包

我们在生产环境运行的时候,是使用jar的方式启动的。这里就需要我们将我们的项目打成jar,然后把项目运行起来。

项目结构如下:

模块用途
my-project-dependencies统一的依赖管理
my-project-common通用模块
my-project-generator代码生成器
my-project-server项目服务模块

本次构建的项目服务模块my-project-server依赖my-project-dependenciesmy-project-common。所以需要先把这两个模块install安装到本地,以便my-project-server打包的时候,可以依赖到这两个模块。

项目打包的方式有多种,这里就简单介绍常用的两种方式。

2.1、IDEA打包

IDEA 打包方法:

  1. 点击右侧Maven菜单
  2. 双击打开要操作的模块
  3. 点击Lifecyle
  4. 双击需要进行的操作。例如:clean、install、package

如下图:

步骤:

  1. install安装my-project-dependencies
  2. install安装my-project-common
  3. 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,即可访问查询所有用户接口

react+koa2+mongodb项目+腾讯云服务器windows系统打包部署上线完整(图文)攻略(代码片段)

...服务器打包前端项目nginx服务器mongodb安装和使用安装nvm及配置后端项目部署启动线上项目项目gitee地址https://gitee.com/guozia007/cuckoo打包部署相关工具介绍服务器腾讯云-轻量应用服务器(主要是便宜)连接服务器工具 查看详情

linux下部署springboot项目的步骤及过程

最近在研究将springboot项目部署到Linux服务器上,由于springboot是内嵌了tomcat,所以可以直接将项目打包上传至服务器上。我是在idea上的项目,所以我就基于此说下过程。(一)打包你的项目1、在pom文件中添加springboot的maven插件&nb... 查看详情

使用idea对springboot项目打war包及遇到的问题总结(代码片段)

使用maven创建的springboot项目的默认打包方式是jar包,而且springboot是自带Tomcat的。部署项目时需要打包成对应的war包,并将项目部署到服务器的Tomcat下,所以项目打包时就需要修改一些配置。主要修改pom.xml文件中的一... 查看详情

vue项目的打包上线运行(tomcat)和springboot打包(代码片段)

1、Vue项目打包当vue项目开发测试完成需要上线的时候,先修改几处配置,然后执行npmrunbuild命令打包。此处以打包后发布到tomcat容器中运行为例。1、修改/config/index.js文件,在module.exports中找到build子模块,找到描... 查看详情

springboot项目如何进行打包部署

springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。首先需要在appl... 查看详情

springboot:springboot如何测试打包部署

有很多网友会时不时的问我,springboot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下springboot如何开发、调试、打包到最后的投产上线。开发阶段单元测试在开发阶段的时候最重要的是单元测... 查看详情

springboot系列——利用系统环境变量与配置文件的分支选择实现“智能部署”

  前言  通过之前的博客:SpringBoot系列——jar包与war包的部署,我们已经知道了如果实现项目的简单部署,但项目部署的时候最烦的是什么?修改成发布环境对应的配置!数据库连接地址、Eureka注册中心地址、Redis服... 查看详情

(dockernginx)springboot+vue前后端分离部署详细完整版

参考技术A简述:Springboot+Vue前后端分离项目部署,主要采用docker容器部署方式。Springboot项目部署:docker构建mysql环境+docker构建项目自身环境。Vue项目:使用docker启动nginx服务器方式代理部署。项目使用mysql8.0作为数据源,所以部... 查看详情

springboot项目打包成war用tomcat运行好还是打包成jar直接启动好?为何?

...江山,Java的生态圈环境很好,有着很多优秀的框架,而SpringBoot作为Spring框架中的代表,这几年也越来越火。SpringBoot是用来简化Spring应用的配置和开发过程的,此框架采用了“约定优于配置”的理念,免去了繁琐的XML配置,使我... 查看详情

springboot项目打包分开lib,配置和资源文件

原文地址:https://blog.csdn.net/u012811805/article/details/808788481jar启动分离依赖lib和配置  先前发布boot项目的时候,改动一点东西,就需要将整个项目重新打包部署,十分不便,故把依赖lib从项目分离出来,每次部署只需要发布代码... 查看详情

bi系统打包docker镜像及部署的技术难度和实现

BI系统打包Docker镜像及部署的技术难度和实现随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用;传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置nginx文件&#x... 查看详情

springboot框架开发web项目springboot项目的打包和部署(代码片段)

现在我们已经有了一个简单的项目了,我们应该怎么将项目打包,并部署到服务器上呢?工具IntelliJIDEA16JDK1.8Maven3.5Tomcat1.8将项目打成war包并部署到Tomcat中1、首先打开我们的pom.xml文件,修改其中的配置<groupId>c... 查看详情

jenkins+docker一键自动化部署springboot项目

本文章实现最简单全面的​​Jenkins+docker+springboot​​ 一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运... 查看详情

jenkins自动部署springboot项目

说明:该示例为在windows系统下自动化部署springboot架构:springboot+github+gradle+jdk8各种配置步骤及截图说明:1、配置git,gradle及jdk  系统管理→全局工具配置  说明:其中git配置项中的PathtoGitexecutable要指到git.exe文件,m... 查看详情

springboot项目打包-assembly

参考技术A项目部署并不是一个单一的jar包就完事,实际上除了jar包还有很多其他文件,比如sql脚本、安装脚本等其他文件,本文要说的就是如何将这些文件统一打包成一个压缩包文件,直接上传linux服务器安装。一个项目从立项... 查看详情

springboot项目打包部署后设置上传文件访问的绝对路径

1、设置绝对路径application.properties的配置#静态资源对外暴露的访问路径file.staticAccessPath=/upload/**#文件上传目录(注意Linux和Windows上的目录结构不同)#file.uploadFolder=/home/upload/file.uploadFolder=d://upload/配置上传文件的目录,也可以在... 查看详情

maven部署war项目到远程tomcat服务器

...服务器端开发,其一般开发流程为需求分析、系统设计与实现、测试和部署上线。Java服务器端项目一般会打包成war格式并部署在Tomcat服务器中,在项目部署初期,需要频繁的将war包拷贝到远程服务器进行上线前测试,如果每次... 查看详情

springboot简单打包部署(附工程)

SpringBoot简单打包部署(附工程)前言本文主要介绍SpringBoot的一些打包事项和项目部署以及在其中遇到一些问题的解决方案。SpringBoot打包在SpringBoot打包这块,我们就用之前的一个web项目来进行打包。首先需要明确的是,该项目打包... 查看详情