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 的话,也可能会抛出这个异常!
: » 解决SpringBoot配置文件中使用@project.version@报’@’ that cannot start any token.问题
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/251996.html