Skip to content

引言

首先,我需要明确整个过程的步骤。大致步骤应该是:

1. 环境准备:确保已经安装了 JDK17、IntelliJ IDEA 和 Maven。
2. 打开项目:使用 IntelliJ IDEA 搭建一个现有的项目。
3. 配置项目:编写必要的代码和配置。
4. 打包项目:使用 Maven 将项目打包成 JAR 文件。
5. 部署项目:将打包好的 JAR 文件上传到服务器,并配置运行环境。
6. 运行项目:在服务器上启动 JAR 文件,并验证项目是否正常运行。

接下来,我需要详细思考每一步的具体操作,确保教程中的每一步都清晰明了,适合不同水平的读者。

环境准备

IntelliJ IDEA 是一款由 JetBrains 开发的 Java 集成开发环境(IDE),支持多种编程语言和框架。以下是详细的安装步骤:

  1. 下载工具

访问官网:打开浏览器,进入 JetBrains 官网

IDEA工具

选择版本:

Ultimate 版:功能全面,适合企业开发,需付费。

Community 版:免费,适合个人和小型项目。

工具选择

下载:点击 Download 按钮,选择适合你操作系统的版本进行下载。

下载工具

  1. 安装工具
  • Windows 系统

运行安装程序:找到下载的 .exe 文件,双击运行。

安装IDEA

如已安装旧版本,安装时会提示可以卸载已安装版本。

安装IDEA

选择安装路径:默认路径为 C:\Program Files\JetBrains\IntelliJ IDEA <版本号>,可自定义。

安装IDEA

TIP

本次下载安装的是 ideaIU-2024.3.3.exe 版本,因此默认安装路径是 C:\Program Files\JetBrains\IntelliJ IDEA 2024.3.3;

配置安装选项:创建桌面快捷方式,将 IntelliJ IDEA 添加到系统 PATH

安装IDEA

TIP

如果有需要可以将配置选项中的快捷方式、环境变量及支持的格式全部选中。

选择 开始 菜单文件夹;

安装IDEA

开始安装:点击 安装 按钮,等待安装完成。

安装IDEA

完成安装:安装结束后,点击“Finish”退出安装程序。

安装IDEA

  • MacOS 系统

挂载 DMG 文件:双击下载的 .dmg 文件。

拖拽安装:将 IntelliJ IDEA 图标拖到 Applications 文件夹。

启动应用:在 Applications 文件夹中找到 IntelliJ IDEA,双击启动。

TIP

MacOS操作系统安装本章节不详细说明图文安装教程,有需要的伙伴请自行查阅相关安装文档。

打开项目

IntelliJ IDEA 是一款强大的 IDE,非常适合开发 Spring Boot 项目。以下是详细步骤:

  1. 准备工作
安装 IntelliJ IDEA:确保已安装 IntelliJ IDEA(Community 或 Ultimate 版)。
安装 JDK:Spring Boot 需要 JDK 17 或更高版本(推荐JDK17)。
安装 Maven/Gradle:Spring Boot 项目通常使用 Maven 或 Gradle 构建工具。

TIP

特别备注:目前官方全系列项目全部采用 Maven 做版本依赖管理,因此推荐使用 Maven。

  1. 打开项目

启动 IntelliJ IDEA

启动IDEA

打开项目:

打开项目

选择项目:

打开项目

选中指定项目后,点击 OK

TIP

信任项目:首次打开时,IDE 会询问是否信任项目,点击 Trust Project

打开项目后如下图:

打开项目

  1. 依赖下载

等待依赖下载:IDEA 会自动下载依赖并构建项目。

TIP

IntelliJ IDEA 中配置 Maven 是开发 Java 项目的关键步骤。打开项目网络正常的情况会自动下载 Maven 依赖包。当然我们也可以自行指定 Maven 依赖版本。

以下是详细的配置教程:

  • 检查 Maven

打开终端或命令提示符,检查 Maven 是否安装,运行以下命令:

E:\apache-maven-3.8.4\bin>mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: E:\apache-maven-3.8.4
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_321\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"

如果显示 Maven 版本信息,说明已安装。

  • 安装 Maven

如果未安装,可以从 Maven 官网 下载并安装。

Maven下载

TIP

根据实际需要下载需要的版本,此处不作强行要求,也可以使用官方使用的 apache-maven-3.8.4 版本。

  • 配置 Maven

打开设置:进入 File > Settings(Windows/Linux)IntelliJ IDEA > Preferences(macOS)

找到 Maven 配置:在左侧导航栏中,选择 Build, Execution, Deployment > Build Tools > Maven

Maven下载

> 配置 Maven 主目录:
在 `Maven home path` 中,选择已安装的 `Maven` 路径(例如:`E:\apache-maven-3.8.4`)。

> 配置用户设置文件:
在 User settings file 中,指定 settings.xml 文件的路径(通常位于 ~/.m2/settings.xml)。

> 配置本地仓库:
在 Local repository 中,指定 Maven 本地仓库路径(通常位于 ~/.m2/repository)。

应用更改:

点击 ApplyOK 保存配置。

配置项目

在项目中,通常需要为不同的环境(如本地、开发、测试、UAT、生产)配置不同的配置文件。通过多环境配置,可以灵活地管理不同环境下的参数(如数据库连接、日志级别、第三方服务地址等)。

本项目采用多环境配置文件的命名规则,支持通过 application-{profile}.propertiesapplication-{profile}.yml 文件来定义不同环境的配置。其中 {profile} 是环境名称。

# 本地环境
application-local.yml

# 开发环境
application-dev.yml

# 测试环境
application-test.yml

# UAT 环境
application-uat.yml

# 生产环境
application-prod.yml

TIP

默认情况下,会加载 application.propertiesapplication.yml 作为通用配置,然后根据激活的环境加载对应的配置文件。

本项目的启动模块是 xiaomayi-modules/xiaomayi-admin 模块,在模块的 POM 文件中定义了支持多种环境变量,包括 localdevtestuatprod 等环境参数和变量。

<!-- 全局编译环境变量 -->
<profiles>
    <!-- 本地开发环境 -->
    <profile>
        <id>local</id>
        <properties>
            <package.environment>local</package.environment>
        </properties>
        <activation>
            <!-- 设置默认开启本地环境 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!-- 开发环境 -->
    <profile>
        <id>dev</id>
        <properties>
            <package.environment>dev</package.environment>
        </properties>
    </profile>
    <!-- 测试环境 -->
    <profile>
        <id>test</id>
        <properties>
            <package.environment>test</package.environment>
        </properties>
    </profile>
    <!-- 预发布环境 -->
    <profile>
        <id>uat</id>
        <properties>
            <package.environment>uat</package.environment>
        </properties>
    </profile>
    <!-- 生产环境 -->
    <profile>
        <id>prod</id>
        <properties>
            <package.environment>prod</package.environment>
        </properties>
    </profile>
</profiles>

通过 @package.environment@ 作为占位,可以在 application.ymlapplication.properties 中动态设置 spring.profiles.active

spring:
  profiles:
    active: @package.environment@

环境变量和参数配置后,在工具 maven 插件中会同步读取并呈现,如下图:

环境变量

本次项目打包我们模拟生产环境发布,选择 prod 环境分支,因此根据配置文件规则,默认读取的是 application.yml 公共配置文件 和 application-prod.yml 分支环境配置文件。

环境变量

  1. 公共环境 application.yml 配置文件
# 全局配置
spring:
  application:
    name: xiaomayi-admin
  #  main:
  #    allow-bean-definition-overriding: true
  # 全局配置文件
  config:
    # 导入配置文件
    import:
      # Mybatis配置文件
      - configs/application-mybatis.yml
      # 日志配置文件
      - configs/application-logger.yml
      # 安全认证配置文件
      - configs/application-security.yml
      # 在线文档配置文件
      - configs/application-springdoc.yml
      # knife4j配置文件
      - configs/application-knife4j.yml
      # freemarker模板引擎配置文件
      - configs/application-freemarker.yml
      # thymeleaf模板引擎配置文件
      - configs/application-thymeleaf.yml
      # 多租户配置文件
      - configs/application-tencent.yml
      # actuator监控文件
      - configs/application-actuator.yml
      # 微信支付、支付宝支付配置文件
      - configs/application-pay.yml
  # 运行环境 local|dev|test|uat|prod,根据active动态加载YML配置文件
  profiles:
    active: @package.environment@
  # 国际化资源
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
    encoding: UTF-8
  # 文件上传配置
  servlet:
    # 设置最大文件上传大小为10MB
    multipart:
      # 开启上传文件配置
      enabled: true
      # 文件上传临时保存位置,没有写入最终保存位置时存放的位置;
      location: /data/
      # 上传单个文件最大大小,设置-1表示不限制
      max-file-size: 10MB
      # 上传一组文件最大大小,设置-1表示不限制
      max-request-size: 10MB
      # 是否延迟解析,相当于懒加载
      resolve-lazily: false
      # 文件大小阈值,当大于这个阈值时将写入到磁盘,否则存在内存中,默认为0
      file-size-threshold: 0
  # 时间格式化
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  # 开发工具
  devtools:
    restart:
      # 开启热部署(更改文件后,自动重启)
      enabled: true
      # 设置哪些资源变动后不触发热部署,会覆盖默认的exclude内容(资源不会触发重启,但会触发实时重新加载)
      #exclude: WEB-INF/**,static/**
      # 监控额外的路径(优先于exclude)
      #additional-paths: src/main/java

##Actuator配置:暴露敏感路径,默认情况下,敏感路径并不暴露
#management:
#  endpoints:
#    web:
#      exposure:
#        # 暴露xxx端点,如需暴露多个,用,分隔;如需暴露所有端点,用'*'
#        include: "*"
#  endpoint:
#    health:
#      # 是否展示健康检查详情
#      show-details: ALWAYS
#
## info信息会显示到SpringBootAdmin的server端,这里取的是pom文件中的数据
#info:
#  version: @project.version@
#  groupId: @project.groupId@
#  artifactId: @project.artifactId@

TIP

上述配置中 spring.config.import 等导入的配置则为其他独立的配置文件(按需引入)。

独立配置文件导入方式如下:

# 全局配置文件
config:
  # 导入配置文件
  import:
    # Mybatis配置文件
    - configs/application-mybatis.yml
    # 其他配置文件(按需引入)
  1. 环境分支 application-prod.yml 配置文件
# 服务配置
server:
  # 端口
  port: 8081
  servlet:
    # 访问上下文前缀
    context-path: /api

spring:
  # 全局配置
  config:
    # 导入配置
    import:
      # redis缓存配置,按需引入
      - configs/prod/application-redis.yml
      # 邮件配置,按需引入
      - configs/prod/application-email.yml
      # 阿里云OSS、SMS配置,按需引入
      - configs/prod/application-aliyun.yml
      # Minio文件存储配置,按需引入
      - configs/prod/application-minio.yml
      # Elastic搜索引擎配置,按需引入
      - configs/prod/application-elastic.yml
      # 钉钉消息配置,按需引入
      - configs/prod/application-dingtalk.yml
      # 令牌配置,按需引入
      - configs/prod/application-token.yml
  # 数据源配置
  datasource:
    # 连接池类型
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      # 设置默认的数据源或者数据源组,默认值为master
      primary: master
      # 严格匹配数据源,默认false,true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: false
      # 多数据源支持,切记实际使用时按需使用,不需要的数据源注释掉
      datasource:
        # 主数据库MySQL
        master:
          driverClassName: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/xiaomayi.elevue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
          username: root
          password: root
#        # 从数据库MySQL,切记主从库时从库与主库表结构一致
#        slave:
#          enabled: false
#          driverClassName: com.mysql.cj.jdbc.Driver
#          url: jdbc:mysql://127.0.0.1:3306/xiaomayi.elevue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#          username: root
#          password: 123456
#        # 数据库PG
#        postgres:
#          enabled: false
#          driverClassName: org.postgresql.Driver
#          url: jdbc:postgresql://localhost:5432/xiaomayi.elevue?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
#          username: postgres
#          password: 123456
#        # 数据库MSSQL
#        sqlserver:
#          enabled: false
#          driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
#          url: jdbc:sqlserver://localhost:1433;DatabaseName=xiaomayi.elevue;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
#          username: sa
#          password: 123456
    # Druid的其他属性配置 springboot3整合情况下,数据库连接信息必须在Druid属性下
    druid:
      # 初始连接物理个数
      initialSize: 5
      # 最小连接池数量
      minIdle: 10
      # 最大连接池数量
      maxActive: 20
      # 配置获取连接等待超时的时间,单位毫秒
      maxWait: 60000
      # 配置连接超时时间
      connectTimeout: 30000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      # 配置一个连接在池中最大生存的时间,单位是毫秒
      maxEvictableIdleTimeMillis: 900000
      # 用来检测数据库连接是否有效的sql 必须是一个查询语句(oracle中为 select 1 from dual)
      validationQuery: SELECT 1 FROM DUAL
      # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      testWhileIdle: true
      # 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      testOnBorrow: false
      # 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      testOnReturn: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      # 是否缓存preparedStatement, 也就是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle,在mysql下建议关闭。
      poolPreparedStatements: true
      # 配置监控统计拦截的filters:去掉后监控界面sql无法统计,'wall'用于防火墙,stat:监控统计、self4j(使用log4j的记得导入log4j的依赖):日志记录、wall:防御sql注入 此处配置不能遗漏服务sql监控台不能监控sql
      filters: stat,wall,log4j
      # 保持长连接
      keepAlive: true
      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
      maxPoolPreparedStatementPerConnectionSize: 20
      # 合并多个DruidDataSource的监控数据
      useGlobalDataSourceStat: true
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      webStatFilter:
        # 是否启用StatFilter默认值true
        enabled: true
        # 添加过滤规则
        url-pattern: /*
        # 忽略过滤的格式
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
      # 配置DruidStatViewServlet
      statViewServlet:
        # 是否启用StatViewServlet默认值true
        enabled: true
        # 访问路径为/druid时,跳转到StatViewServlet
        url-pattern: /druid/*
        # IP白名单(没有配置或者为空,则允许所有访问)
        allow: 
        # IP黑名单 (共同存在时,deny优先于allow)
        deny:
        # 禁用HTML页面上的“Reset All”功能
        reset-enable: false
        # 控制台登录名,默认为root
        login-username: admin
        # 控制台登录密码
        login-password: 123456
      # 配置过滤
      filter:
        stat:
          enabled: true
          # 慢SQL记录
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: true
        wall:
          enabled: true
          config:
            multi-statement-allow: true

# 系统配置
system:
  # 软件名称
  name: 小蚂蚁云
  # 软件版本
  version: 1.0.0
  # 本地存储路径
  profile: /opt/apps/upload/
  # 本地资源访问域名
  domain: http://images.example.com
  # 演示环境
  demo: true

# 代码工具
generator:
  # 软件作者
  author: 小蚂蚁云团队
  # 生成代码存储模块,实际使用时根据需要自行修改
  modelName: xiaomayi-admin
  # 生成文件包路径,实际使用时根据需要自行修改
  packageName: com.xiaomayi.admin
  # 生成文件是否去除前缀,默认是false
  removePrefix: true
  # 数据表前缀,多个逗号“,”分割
  tablePrefix: sys_,gen_,qrtz_,cms_

TIP

在环境变量分支配置文件中,选用指定的数据库驱动和配置相关的数据库连接账号,本项目主要以 MySQL 数据库为主,其他类型数据库支持的扩展库;

打包项目

本项目通过 Maven 打包成可执行的 JAR 文件,然后通过命令行或 IDEA 工具启动。

  1. 检查 POM

确保 pom.xml 中已包含 spring-boot-maven-plugin 插件(项目默认已包含,此处可以忽略)。

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>
  1. 通过工具打包

通过 Maven 工具栏打包,在 IDEA 右侧,点击 Maven 标签(如果没有,可以通过 View > Tool Windows > Maven 打开)。

环境变量

运行打包命令:

展开 Lifecycle,双击 package 命令。
IDEA 会执行 mvn clean package,生成 JAR 文件。

打包执行过程和结果如下图:

环境变量

TIP

查看生成的 JAR 文件:

打包完成后,在项目的 target 目录下会生成一个可执行的 JAR 文件(例如:xiaomayi-admin-biz.jar)。

  1. 通过命令行打包

打开 CMD 终端:

  • 查看 java 版本

PS E:\XiaoMaYi\XiaoMaYi-Nacos-ArcoVue> java --version
java 17.0.9 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
  • 查看 mvn 版本
PS E:\XiaoMaYi\XiaoMaYi-Nacos-ArcoVue> mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: E:\apache-maven-3.8.4
Java version: 17.0.9, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-17
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"
  • 执行命令打包

选择 prod 环境执行打包,确保在 pom.xml 中启用了资源过滤(<filtering>true</filtering>),否则 @package.environment@ 不会被替换。

mvn clean package -Pprod

命令打包

命令打包

命令打包

打包完成后,JAR 文件会生成在 target 目录下。

命令打包

TIP

  1. 打包的方式有很多,可以使用 IDEA 工具打包,也可以使用命令打包,底层原理都是一样的,有能力的企业、开发者可以安装部署 Jenkins 工具,实现 DevOps 自动化运维打包与发布,当然也可以使用 Docker 容器化方解决案部署项目。

  2. 针对中小企业和开发者没有专业的运维工程师,官方提供了相关配套增值服务,包括但不限于 JenkinsDockerK8S 等项目部署的 DevOps 解决方案,有需要的可以去官方购买服务,购买服务后官方会安排专业的运维工程师远程帮您搭建完整配套的软件生态和服务支持。

部署项目

准备一台 4核 8G内存 50G硬盘CentOS Stream 服务器,确保已安装部署基础软件,包括但不限于 MySQLNginxJDKRedis 等软件。

  1. 检查 java 版本
[root@localhost S1]# java --version
java 17.0.11 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 17.0.11+7-LTS-207)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.11+7-LTS-207, mixed mode, sharing)
  1. 检查 redis 版本
[root@localhost S1]# redis-cli --version
redis-cli 6.0.9
  1. 检查 MySQL 版本
[root@localhost S1]# mysql -V
mysql  Ver 14.14 Distrib 5.7.35, for Linux (x86_64) using  EditLine wrapper

TIP

推荐使用 MySQL8 数据库,此处仅作为案例示意。

  1. 检查 MySQL 版本
[root@localhost S1]# nginx -V
nginx version: nginx/1.18.0
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC) 
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_gzip_static_module
  1. 上传 JAR

使用客户端执行 scp 命令或者使用 SFTPXShell 等客户端工具远程连接服务器并上传 JAR。官方以 XShell 客户端工具为例进行说明。

  • 打开 XShell 工具

命令打包

  • 上传 JAR

命令打包

  • 查看 JAR
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ll
总用量 376896
-rw-r--r-- 1 root root 182753781 6月  25 2024 jdk-17_linux-x64_bin.tar.gz
-rw-r--r-- 1 root root 203184475 2月  26 02:18 xiaomayi-admin-biz.jar
[root@localhost src]# df -TH
文件系统            类型      容量  已用  可用 已用% 挂载点
devtmpfs            devtmpfs  2.0G     0  2.0G    0% /dev
tmpfs               tmpfs     2.0G     0  2.0G    0% /dev/shm
tmpfs               tmpfs     2.0G  127M  1.9G    7% /run
tmpfs               tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/cl-root xfs        37G   14G   24G   36% /
/dev/sda2           xfs       1.1G  291M  774M   28% /boot
/dev/sda1           vfat      628M  7.6M  621M    2% /boot/efi
overlay             overlay    37G   14G   24G   36% /var/lib/docker/overlay2/4ca53933946e031bd16e2e5562a80cc842f86d7875662270b49a6316fa3034d3/merged
overlay             overlay    37G   14G   24G   36% /var/lib/docker/overlay2/56c9e346e9a8cd20c181fdfb7f3de45f89ca2c3c2eb18286746d78322c5bbc9a/merged
overlay             overlay    37G   14G   24G   36% /var/lib/docker/overlay2/e1b96d90546e9753dfce03752a96a9d823407e6012abe9c9b228680d7c332f7e/merged
overlay             overlay    37G   14G   24G   36% /var/lib/docker/overlay2/72640ac62ad38de1f428f2d0228eb83782440ecf933c38e934c17dab2ed7e762/merged
overlay             overlay    37G   14G   24G   36% /var/lib/docker/overlay2/67e7164c42f815d6de1aaf3113eb3dc80e58a43161a044f20364674db50d68f3/merged
overlay             overlay    37G   14G   24G   36% /var/lib/docker/overlay2/6eaedcc81682a5ae6a162a33b34f7a8800e0bf09e4d67bd251f9ee7c1b5c9c20/merged
tmpfs               tmpfs     392M     0  392M    0% /run/user/1000

查看 JAR 大小:

[root@localhost src]# du -sh xiaomayi-admin-biz.jar 
194M	xiaomayi-admin-biz.jar

TIP

从上述查询结果可以看出,本次打包 JAR 包的大小是:194M。

运行项目

打包完成后,生成的 JAR 文件会根据 @package.environment@ 的值自动激活对应的环境配置。在已安装部署好运行环境的 Linux 服务器上启动应用。

  • 直接启动
java -jar xiaomayi-admin-biz.jar

TIP

如果打包时指定了 -Pprod,则会激活 application-prod.yml 中的配置。

  • 守护进程启动

如果需要以后台守护进程的方式启动,则需以下操作:

  1. 使用 nohup 命令
nohup java -jar xiaomayi-admin-biz.jar > app.log 2>&1 &

参数说明:
nohup:让进程在后台运行,即使关闭终端也不会停止。
> app.log:将日志输出到 app.log 文件。
2>&1:将错误输出重定向到标准输出。
&:在后台运行。

查看日志:

tail -f app.log
  1. 使用 systemd 管理服务

创建服务文件:

/etc/systemd/system/ 目录下创建一个服务文件(例如 myapp.service):

vi /etc/systemd/system/myapp.service

文件内容示例:

[Unit]
Description=My Spring Boot Application
After=syslog.target

[Service]
User=user
ExecStart=/usr/bin/java -jar /usr/local/src/xiaomayi-admin-biz.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

启动服务:

# 重新加载 systemd 配置
systemctl daemon-reload
# 启动服务
systemctl start myapp
# 设置开机自启
systemctl enable myapp

查看服务状态:

使用以下命令查看服务状态:

systemctl status myapp

设置执行权限:

确保 JAR 文件和日志文件有正确的权限

chmod 755 xiaomayi-admin-biz.jar

小蚂蚁云团队 · 提供技术支持