Caused by: org.yaml.snakeyaml.scanner.ScannerException

4 篇文章 0 订阅
2 篇文章 0 订阅

SPRING APPLICATION使用@ 使用的问题:'@' THAT CANNOT START ANY TOKEN. (DO NOT USE @ FOR INDENTATION)

标签: Spring  spring boot  spring  maven

错误信息

在application配置文件中使用@出现异常:

Exception in thread "main" while scanning for the next token
found character '@' that cannot start any token. (Do not use @ for indentation)
 in 'reader', line 4, column 11:
        name: @project.artifactId@

代码:

info:
  app:
    name: @project.artifactId@
    encoding: @project.build.sourceEncoding@
    java:
      source: @java.version@
      target: @java.version@

解决办法

  1. 用单引号或双引号将@@之间的内容包起来
info:
  app:
    name: "@project.artifactId@"
    encoding: '@project.build.sourceEncoding@'
    java:
      source: '@java.version@'
      target: '@java.version@'
  • 或者添加maven依赖

使用Maven的资源过滤(resource filter)自动暴露来自Maven项目的属性,如果使用spring-boot-starter-parent,你可以通过@…@占位符引用Maven项目的属性,例如:
app.encoding=@project.build.sourceEncoding@
app.java.version=@java.version@
注 如果启用addResources标识,spring-boot:run可以将src/main/resources直接添加到classpath(出于热加载目的),这就绕过了资源过滤和本特性。你可以使用exec:java目标进行替代,或自定义该插件的配置,具体查看插件使用页面

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>

<plugins>
	<plugin>
	    <groupId>org.apache.maven.plugins</groupId>
	    <artifactId>maven-resources-plugin</artifactId>
	    <version>2.7</version>
	    <configuration>
	        <delimiters>
	            <delimiter>@</delimiter>
	        </delimiters>
	        <useDefaultDelimiters>false</useDefaultDelimiters>
	    </configuration>
	</plugin>
<plugins/>

注 如果你在配置中使用标准的Spring占位符(比如${foo})且没有将useDefaultDelimiters属性设置为false,那构建时这些属性将被暴露出去

 

原文链接:https://www.freesion.com/article/8577344369/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值