当前位置: 首页 > wzjs >正文

打开网址跳转到国外网站小红书关键词排名优化

打开网址跳转到国外网站,小红书关键词排名优化,如何创建一个自己的平台,保险公司发展规划前言 在Spring Boot项目中,YAML配置文件常使用占位符(如 logging.level)实现动态配置。然而,若未正确配置Maven资源过滤机制,占位符可能未被替换,导致ScannerException。 一、问题现象与报错分析 1.1 报错…

前言

在Spring Boot项目中,YAML配置文件常使用占位符(如 @logging.level@)实现动态配置。然而,若未正确配置Maven资源过滤机制,占位符可能未被替换,导致ScannerException


一、问题现象与报错分析

1.1 报错信息

ERROR org.springframework.boot.SpringApplication -- Application run failed  
org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token  
found character '@' that cannot start any token. (Do not use @ for indentation)  
in 'reader', line 14, column 19:  com.xiaoli: @logging.level@  ^  

1.2 错误定位

  1. 错误类型ScannerException表明YAML解析器在读取配置文件时遇到非法字符。
  2. 关键线索
    • 错误位置指向@logging.level@,说明占位符未被替换。
    • Do not use @ for indentation提示YAML语法中@不可作为标识符开头。
  3. 根本原因
    • Maven构建时未正确替换YAML文件中的占位符,导致残留的@...@符号被YAML解析器识别为非法字符。

二、解决方案与配置解析

2.1 核心思路

通过 Maven资源过滤机制,在构建过程中动态替换YAML文件中的占位符(如${logging.level}),确保最终输出的配置文件不含未解析的占位符。

2.2 配置详解

pom.xml中,通过<resources>标签配置资源过滤规则:

<build>  <resources>  <!-- 第一个resource:复制所有资源,但关闭过滤 -->  <resource>  <directory>src/main/resources</directory>  <filtering>false</filtering>  </resource>  <!-- 第二个resource:仅对指定文件启用过滤 -->  <resource>  <directory>src/main/resources</directory>  <filtering>true</filtering>  <includes>  <include>application*</include>  <include>bootstrap*</include>  <include>banner*</include>  </includes>  </resource>  </resources>  
</build>  
2.2.1 配置作用解析
  1. 第一个 <resource>

    • <directory>:指定资源目录为src/main/resources
    • <filtering>false</filtering>:关闭过滤功能,确保所有文件(包括未使用占位符的文件)被直接复制到构建输出目录(如target/classes)。
    • 作用:避免因过滤导致某些资源文件被遗漏。
  2. 第二个 <resource>

    • <directory>:仍指向src/main/resources,但通过<includes>限制范围。
    • <includes>:仅包含以applicationbootstrapbanner开头的文件(如application.ymlbootstrap.properties)。
    • <filtering>true</filtering>:启用过滤功能,替换文件中的占位符(如${logging.level})。
    • 作用:对目标文件进行占位符替换,同时避免对其他文件重复操作。
2.2.2 关键点说明
  • 资源覆盖机制
    Maven会按顺序处理资源块:
    1. 第一个块将所有文件(未过滤)复制到输出目录。
    2. 第二个块再次复制指定文件(已过滤),覆盖未过滤的版本,确保最终文件为已替换的版本。
  • 占位符格式
    Maven默认使用${...}格式的占位符,而非@...@。若需使用其他符号(如@...@),需通过<configuration>自定义占位符语法(复杂度较高,建议采用标准格式)。

三、扩展知识点与最佳实践

3.1 YAML语法规范

  1. 除了我们这种动态替换的场景,不要用@符号
    • YAML中@不可作为标识符开头,其常用于注释或特殊语法(如@start)。
    • 示例错误
      key: @value@  # 非法,YAML解析器无法识别  
      
  2. 正确缩进与冒号
    • 使用2个空格缩进,避免制表符(Tab)。
    • 键值对后需加空格,如key: value而非key:value

3.2 Maven资源过滤机制

  1. 过滤流程
    • Maven读取pom.xml中的<properties><profiles>定义的属性值。
    • 在构建时,替换资源文件中${属性名}为实际值。
  2. 属性定义示例
    <properties>  <logging.level>debug</logging.level>  
    </properties>  
    
  3. 环境配置
    <profiles>  <profile>  <id>dev</id>  <properties>  <logging.level>debug</logging.level>  </properties>  </profile>  <profile>  <id>prod</id>  <properties>  <logging.level>info</logging.level>  </properties>  </profile>  
    </profiles>  
    

3.3 验证配置有效性

  1. 清理并构建
    mvn clean install -Pdev  # 指定dev环境  
    
  2. 检查输出文件
    • 进入target/classes目录,确认application.yml中的占位符已被替换为实际值(如debug)。
  3. 日志验证
    • 启动应用后,查看日志是否包含logging.level的生效信息。

四、常见问题与排查建议

4.1 问题:占位符未被替换

  • 原因
    • 未在pom.xml中定义属性值。
    • 文件未被包含在<includes>中。
  • 解决
    1. 检查<properties><profiles>中是否定义了对应属性。
    2. 确保文件名匹配<include>规则(如application.yml需匹配application*)。

4.2 问题:资源文件缺失

  • 原因
    • 第一个<resource>块未关闭过滤,导致部分文件未被复制。
  • 解决
    • 确保第一个<resource>块的<filtering>设置为false

五、总结

5.1 核心知识点回顾

  1. Maven资源过滤:通过<resources>配置动态替换占位符。
  2. YAML语法规范:避免使用@符号,严格遵循缩进与格式。
  3. 环境配置管理:通过<profiles>实现多环境属性切换。

5.2 知识点延伸

  • 进阶配置
    • 使用<excludes>排除特定文件。
    • 通过<filter>指定额外的过滤属性文件。
  • 工具辅助
    • 使用IDEA的Maven插件实时检查资源过滤配置。
    • 使用yamllint工具验证YAML文件格式。

六、完整配置示例

<project>  <!-- 其他配置省略 -->  <build>  <resources>  <resource>  <directory>src/main/resources</directory>  <filtering>false</filtering>  </resource>  <resource>  <directory>src/main/resources</directory>  <filtering>true</filtering>  <includes>  <include>application*.yml</include>  <include>bootstrap*.properties</include>  </includes>  </resource>  </resources>  <properties>  <logging.level>debug</logging.level>  </properties>  <profiles>  <profile>  <id>prod</id>  <properties>  <logging.level>info</logging.level>  </properties>  </profile>  </profiles>  </build>  
</project>  
http://www.dtcms.com/wzjs/58621.html

相关文章:

  • 不忘初心 继续前进网站怎么做宁波seo网络推广优化价格
  • 潍坊建设网站多少钱网络市场调研的五个步骤
  • 建设厅的工程造价网站seo快速推广
  • 望都网站建设营销失败案例分析
  • 视频一页网站怎么做做推广哪个平台效果好
  • 做个外贸网站多少钱恩施seo整站优化哪家好
  • 天河商城型网站建设高端企业网站定制公司
  • 怎样做违法网站软文300字介绍商品
  • 手机网站欢迎页面网址大全2345
  • 如何在12366网站上做实名认证河南今日头条最新消息
  • 坊网站建设整站快速排名
  • 马鞍山网站设计价格seo搜索引擎优化是什么意思
  • 如何做微信朋友圈网站抖音seo排名系统
  • 个人买卖网站怎么做企业网络
  • 购物商城网站建设方案最近新闻热点事件
  • 深圳办公室装修设计公司简单网站建设优化推广
  • 黄骅做网站|黄骅网站|黄骅百度优化|黄骅百度推广|黄骅微信|黄骅友情链接平台网站
  • 网站设计公司哪家关键词竞价排名
  • 塘沽做网站的公司镇海seo关键词优化费用
  • 免费建立教育网站免费浏览外国网站的软件
  • 做外贸 需要做网站吗seo研究中心好客站
  • 网站流量优化百度账号登录中心
  • 济宁哪里做网站最便宜汽车网络营销的方式有哪些
  • 行业平台网站建设网络销售怎么才能找到客户
  • wordpress网站维护页面关键词优化app
  • 网站排名靠什么化妆品推广软文
  • 网站系统升级建设合同上海比较大的优化公司
  • 个人网站做企业网站chrome浏览器官网入口
  • 网站做推广 建设哪种类型合适外链代发公司
  • 自己做网站空间aso优化分析