一、pom文件添加环境配置
<!-- 环境 -->
<profiles>
<!-- 本地 -->
<profile>
<id>local</id>
<activation>
<!--默认激活配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--当前环境-->
<profile.name>local</profile.name>
<!--Nacos服务地址-->
<config.server-addr>192.168.0.112:8847</config.server-addr>
<config.space>Public</config.space>
</properties>
</profile>
<!-- 开发 -->
<profile>
<id>dev</id>
<activation>
<!--默认激活配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--当前环境-->
<profile.name>dev</profile.name>
<!--Nacos服务地址-->
<config.server-addr>192.168.0.112:8847</config.server-addr>
<config.space>Public</config.space>
</properties>
</profile>
<!-- 测试 -->
<profile>
<id>test</id>
<properties>
<!--当前环境-->
<profile.name>test</profile.name>
<!--Nacos服务地址-->
<config.server-addr>192.168.0.112:8847</config.server-addr>
<config.space>14304a80-d0f8-4538-a355-595a1f8da91e</config.space>
</properties>
</profile>
<!-- 生产 -->
<profile>
<id>prod</id>
<properties>
<!--当前环境-->
<profile.name>prod</profile.name>
<!--Nacos服务地址-->
<config.server-addr>192.168.0.112:8847</config.server-addr>
<config.space>c80f3dc4-c68f-4bf2-859c-ec224d5a7b4a</config.space>
</properties>
</profile>
</profiles>
只添加这些配置,启动项目会报错,如下
while scanning for the next token found character '@' that cannot start any token. (Do not use @ for indentation) in 'reader', line 4, column 13: active: @profileName@
需要在pom.xml的build标签中添加一段resource配置
<resources>
<resource>
<directory>src/main/resources</directory>
<!--开启过滤,用指定的参数替换directory下的文件中的参数-->
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.json</include>
<include>**/*.ftl</include>
</includes>
</resource>
</resources>
这段配置功能说明:
在Maven项目的pom.xml文件中定义的资源过滤配置。在Maven项目中,src/main/resources目录下的文件通常被视为资源文件,这些资源文件在构建项目时会被复制到输出目录(如target/classes),以便在运行时被访问。
在这个配置中:
元素用于定义一个资源目录及其配置。
第一个 元素指定了src/main/resources目录,它包含了true的配置,表示对该目录下的资源文件执行过滤操作。
第二个 元素指定了src/main/java目录,并通过指定了需要包含的文件类型(.xml、.json、.ftl)。这些文件也会被视为资源文件,并在构建过程中被复制到输出目录。
通过这样的配置,你可以灵活地控制哪些文件会被视为项目的资源文件,并在构建过程中将它们复制到合适的位置。而配置则允许你在构建过程中对资源文件执行一些替换操作,比如替换属性值或者变量。
根据上述配置完,就可以在自己项目的yml中引用变量。
spring:
application:
# 应用名称
name: arun-gateway
profiles:
# 环境配置
active: @profile.name@
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: @config.server-addr@
#namespace: @config.space@
config:
# 配置中心地址
server-addr: @config.server-addr@
#namespace: @config.space@