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

批量替换yaml文件url字段

方法入口

import java.util.Arrays;
import java.util.List;public class YamlUpdaterMain {public static void main(String[] args) {List<String> paths = Arrays.asList("D:\\git_project\\auth\\auth-server\\src\\main\\resources\\application.yaml","D:\\git_project\\datatransfer\\datatransfer-server\\src\\main\\resources\\application.yaml","D:\\git_project\\oss\\oss-server\\src\\main\\resources\\application.yaml","D:\\git_project\\push\\push-server\\src\\main\\resources\\application.yaml","D:\\git_project\\system\\system-server\\src\\main\\resources\\application.yaml","D:\\git_project\\platcap\\platcap-server\\src\\main\\resources\\application.yaml","D:\\git_project\\foreign\\foreign-server\\src\\main\\resources\\application.yaml");String url = "10.20.120.70";System.out.println("========================================");System.out.println("         YAML URL 批量更新工具          ");System.out.println("========================================");System.out.println("目标 URL: " + url);System.out.println("待处理文件数: " + paths.size());System.out.println("----------------------------------------");YamlUpdater updater = new YamlUpdater();updater.updateServerUrl(paths, url);System.out.println("\n========================================");System.out.println("           所有文件处理完成             ");System.out.println("========================================");}
}

逻辑类


import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Map;public class YamlUpdater {/*** 批量更新一系列 application.yaml 文件中的 server.url 属性。** @param filePaths 包含所有 application.yaml 文件路径的列表。* @param newUrl 要设置的新 URL 值 (例如 '192.168.10.55')。*/public void updateServerUrl(List<String> filePaths, String newUrl) {Yaml yaml = createYamlInstance();int i = 1;for (String path : filePaths) {System.out.println(i++ + "\n--- 处理文件: " + path + " ---");File file = new File(path);if (!file.exists()) {System.err.println("  ❌ 错误: 文件未找到。跳过。");continue;}try (FileInputStream inputStream = new FileInputStream(file)) {// 1. 读取并加载 YAML 文件内容@SuppressWarnings("unchecked")Map<String, Object> data = yaml.load(inputStream);// 2. 检查并修改 'server.url'// 检查顶层 key: serverif (data != null && data.containsKey("server")) {@SuppressWarnings("unchecked")Map<String, Object> serverConfig = (Map<String, Object>) data.get("server");// 检查次级 key: urlif (serverConfig != null && serverConfig.containsKey("url")) {Object oldUrl = serverConfig.get("url");serverConfig.put("url", newUrl); // 替换值System.out.println("  ✅ 成功替换 server.url: '" + oldUrl + "' -> '" + newUrl + "'");// 3. 将修改后的内容写回文件try (FileWriter writer = new FileWriter(file)) {yaml.dump(data, writer);System.out.println("  ✅ 文件已成功更新并保存。");}} else {System.out.println("  ⚠️ 警告: 未找到 'server.url' 路径。跳过。");}} else {System.out.println("  ⚠️ 警告: 未找到顶层 'server' 节点。跳过。");}} catch (IOException e) {System.err.println("  ❌ 错误: 文件读写失败,详情: " + e.getMessage());} catch (Exception e) {System.err.println("  ❌ 错误: YAML 解析或处理失败,详情: " + e.getMessage());}}}/*** 配置 SnakeYAML 的 DumperOptions,以保持输出的 YAML 格式清晰且与 Spring Boot 兼容。*/private Yaml createYamlInstance() {DumperOptions options = new DumperOptions();// 设置默认样式为块状 (Block Style),这使得 YAML 更易读options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);// 缩进设置为2个空格,符合 Spring Boot 常见规范options.setIndent(2);// 禁用排序,保持 key 的原始顺序options.setPrettyFlow(true);options.setCanonical(false);// 允许 unicode 字符输出options.setAllowUnicode(true);return new Yaml(options);}}
http://www.dtcms.com/a/457865.html

相关文章:

  • “软件维护” 分 4 类?用 “奶茶店售后” 讲透更正 / 适应性 / 完善性维护
  • 恋爱ppt模板免费下载网站网站建设项目风险管理的主要内容
  • 网站主机选择98建筑人才网
  • Windows中在QTCreator中调试,提示缺少debug information files问题的解决
  • 做宠物店网站的素材seo一级域名和二级域名
  • 施工工地云监管平台,工程建设现场管理,智慧工地云平台源码,以AI、物联网、BIM技术为手段,对施工现场进行立体化、全方位、全时段管理
  • 用单调栈高效解决 “首尾均为最大值” 的子数组计数问题(Leetcode 3113)
  • 企业网站自己可以做吗wordpress 登陆 插件
  • 初学c#-c#和.NET Framework - onecopper
  • 大沥南庄网站建设网站开发建设流程
  • nvMolKit:一套基于GPU加速的RDKit核心函数集
  • LOBE-GS:分块致密化效率提升
  • 福州建设招聘信息网站pt网站怎么下载与做
  • dede免费手机网站模板象山seo的优化
  • 央视支持新消费模式:积分助力商家锁客,复购率翻倍
  • 专业政务软件开发北京移动端网站优化
  • 怎样提高网站访问速度一起做网站欧洲站
  • 公司网站建设费属于宣传费吗重庆专业的网站建设公司
  • 广西网站建设哪里好wordpress消息通知
  • 海南网站建设网站开发网站建设的流程步骤
  • 吴恩达机器学习课程(PyTorch适配)学习笔记:1.5 决策树与集成学习
  • 网站推广营销方法成都网站建设 致尚
  • 常州网站建设网站做网站必须要加v吗
  • 理想星环 OS 深度解析:开源浪潮下的智能汽车操作系统革命
  • Qt开发的应用程序编译链接Fast DDS库
  • 网站开发人员属于旅行社手机网站建设成
  • VBA经典应用69例应用9:Preserve关键字利用,保留原值
  • WebRTC 入门与实战(三)之高级篇
  • 二:RAG 的 “语义密码”:向量、嵌入模型与 Milvus 向量数据库实操
  • 一元夺宝网站建设企业网站建设方案对比汇报