解决SpringBoot配置文件中使用@project.version@报’@’ that cannot start any token.问题

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.问题

: » 解决SpringBoot配置文件中使用@project.version@报’@’ that cannot start any token.问题

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/251996.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论