本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
SpringCloud 目前使用的公司比较多,虽然 Netflix 最近宣布一些开源项目不在支持和闭源《Eureka 闭源,Hystrix 停止开发,Neo4j 企业版彻底闭源》,但还是影响不了人们对微服务的热爱和追求。今年以来,我一直致力于公司现有项目的微服务改造,目前我们使用的 SpringCloud,今天在改造其中一个小项目时,报了'@' that cannot start any token异常。本文总结一下如何解决的这个异常。
首先,我在 yml 中做了以下配置:
server: port: 8080 spring: application: name: xttblog eureka: instance: hostname: localhost instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}:@project.version@
然后,Eureka 注册中心中的实例显示不了版本号。
于是我又加了一个配置:
info: version: @project.version@
启动项目,抛出了'@' that cannot start any token. (Do not use @ for indentation)….异常。
SpringBoot 的版本我尝试了 1.5.3.RELEASE 和 1.5.13.RELEASE 都不支持。我检查了一下已经完成改造的项目,在它们的 pom.xml 中发现了秘密。
这个改造的项目和其它项目最大的区别在于配置文件 yml 放的位置。
这个改造的项目中把配置文件放在了 src/main/resources/config/xttblog 下。对于这种情况,我们需要在 pom.xml build 中配置 resource。具体如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/application.yml</include> <include>**/logback-spring.xml</include> <include>**/application-${env}.yml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
注意 <filtering>true</filtering> 必须配置,该属性默认为 false。
当你添加了 <filtering>true</filtering> 后,再启动项目后。问题完美解决!
另外你的项目如果没有指定 spring-boot-starter-parent 的话,也可能会抛出这个异常!
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » 解决SpringBoot配置文件中使用@project.version@报’@’ that cannot start any token.问题