springboot+mvn中根据不同环境打包不同的配置文件

线上项目的配置文件中主要是区分数据库连接等一些配置

application.yml
application-dev.yml
application-prod.yml

第一步:修改application.yml中的配置,如果没有,请添加

# Spring配置
spring:
  profiles:
    active: '@profiles.active@'

第二步:设置dev和prod相关配置,这个根据自己的情况来处理,我是做了数据库、Redis的不同参数,当然你可能还有不同的端口等,不贴示例了

# 应用服务 WEB 访问端口
server:
  port: 8081
 
#数据库连接
spring:
  datasource:
    #配置自己的账户密码
    username: xxx
    password: xxx
    url: jdbc:mysql://127.0.0.1:3306/my_app
    driver-class-name: com.mysql.cj.jdbc.Driver

第三步:pom.xml中配置不同的参数名字

<!-- 环境 -->
<profiles>
    <profile>
        <!--不同环境Profile的唯一id-->
        <id>dev</id>
        <properties>
            <!--profiles.active是自定义的字段(名字随便起),自定义字段可以有多个-->
            <profiles.active>dev</profiles.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <profiles.active>prod</profiles.active>
        </properties>
    </profile>
</profiles>

<!-- 打包 -->
<project>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!--①移除全部配置文件-->
                <excludes>
                    <exclude>application*.yml</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <!--②将所需的配置文件移入-->
                <filtering>true</filtering>
                <includes>
                    <include>application.yml</include>
                    <include>application-${profiles.active}.yml</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

这儿说明一下,为什么我要移除全部yml配置文件,我不想将本地的开发配置打包到jar中,所以这样处理后,线上的jar包文件就只会有application.ymlapplication-prod.yml

现在刷新下maven配置后,idea中就如下图效果
1710859520158.png

注明一下,切换环境后打包前最好是clean一下

第四步:命令行打包

mvn package -P 环境名ID

mvn package -P prod

标签: Java

相关文章

如何使用Go编写跨平台组件并让Java或PHP调用

在现代软件开发中,跨语言调用是一个常见的需求。假设我们有一个用Go语言编写的组件,我们希望Java或PHP能够直接调用这个组件中对外提供的方法。为了实现这一目标,我们可以使用以下几种方法:1. ...

linux下或macOS中配置maven及加速

下载 Maven 压缩包:访问 Maven 官方下载页面,下载你需要的版本。解压压缩包:将下载的压缩包解压到你选择的目录,例如 /opt/maven:sudo mkdir -p /opt/mav...

javax.validation中数据验证的注解使用与示例

javax.validation 是 Java 提供的一个用于数据验证的库,其中定义了多种用于约束和验证数据的注解。下面对常用的验证注解类进行详细介绍,并提供对应的使用示例,每个注解都配有中文注...

编译最新的kkFileView并使用docker打包

kkFileView 是一个开源的文件预览服务,支持多种文件格式的在线预览。本文将详细介绍如何编译 kkFileView 的最新版本,并将其打包成 Docker 镜像。1. 环境准备在开始之前,...

Spring Boot 内置的常用工具类整理

Spring Boot 在核心库中提供了一系列常用的工具类,涵盖了断言、对象处理、集合操作、文件与资源处理、IO 流、反射和 AOP。这些工具类帮助开发者提高代码的简洁性和可维护性。本文将对这些...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件