Spring boot 启动报:Do not use @ for indentation

这个问题的产生是因为在使用idea 的maven 进行编译的时候,没有将其视为变量,而是作为字符串进行的编译,导致target 中的application.yml 文件中的active 的值为:@activatedProperties@,如下所示:

正常情况下,当maven 进行编译时,会将yml 文件中的多环境配置变量更换为指定的配置值,例如:我的默认配置值是dev 则上图中的yml 文件中的@activatedProperties@将在编译后变为dev,如下所示:

而产生这个问题的原因就是打包后的@activatedProperties@没有变为dev(可通过target/classes/application.yml 查看@activatedProperties@是否变为了dev,idea或maven 打包后会生成一个target 文件),还是和第一张图片一样,而spring boot 无法识别@ 标志导致报错,我的多环境配置是这样的:

<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<activatedProperties>dev</activatedProperties>
				<nacosNamespace></nacosNamespace>
				<gatewayip>localhost</gatewayip>
			</properties>
			<activation>
				<!-- 默认环境 -->
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<id>test</id>
			<properties>
				<!-- 环境标识,需要与配置文件的名称相对应 -->
				<activatedProperties>test</activatedProperties>
				<nacosNamespace></nacosNamespace>
				<gatewayip>122.114.79.36</gatewayip>
			</properties>
		</profile>
		<profile>
			<id>prod</id>
			<properties>
				<activatedProperties>prod</activatedProperties>
				<nacosNamespace></nacosNamespace>
			</properties>
		</profile>
	</profiles>

最后打包后却仍如下所示:

spring:
  application:
    # 服务名
    name: service-name
  profiles:
      active:  @activatedProperties@

之后我使用clean 清除target 后重新打包发现,@activatedProperties@变成了dev,之后正常启动

2023年7月27日 补充

如果使用的是idea 启动是需要勾选idea 中maven 中Profiles选项中一项的

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值