环境文件复制

2023-11-03

1、yaml复制

package com.ybw.yaml.demo.generate;

import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;

import java.io.*;
import java.util.Map;

/**
 * @program: yaml-demo
 * @description:
 * @author: geoffrey
 * @create: 2022-07-30 23:04
 */
@Slf4j
public class YamlGenerateTest {

    /**
     * @methodName: generate
     * @return: void
     * @author: ybwei
     * @date: 2022/7/30
     **/
    @Test
    public void generate() throws IOException {
        //1、数据库配置
        DataSourceProperties dataSourceProperties = new DataSourceProperties();
        dataSourceProperties.setUrl("jdbc:mysql://localhost:3306/prod?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC");
        dataSourceProperties.setUsername("prod");
        dataSourceProperties.setPassword("prod123");
        //2、生成文件
        generateApplication(dataSourceProperties);
    }

    /**
     * @param dataSourceProperties
     * @methodName: generateApplication
     * @return: void
     * @author: ybwei
     * @date: 2022/7/30
     **/
    private void generateApplication(DataSourceProperties dataSourceProperties) throws IOException {
        //1、读取置文件,以dev配置文件为模板
        String rootPath = System.getProperty("user.dir");
        String sourceFileName = "application-dev.yml";
        String sourceFilePath = rootPath + "\\src\\main\\resources\\" + sourceFileName;
        log.info(rootPath);
        log.info(sourceFilePath);

        Yaml yaml = new Yaml();
        File file = new File(sourceFilePath);
        Map<String, Object> map = yaml.load(new FileInputStream(file));
        log.info("map:{}", JSON.toJSONString(map));

        //3、替换参数
        //3.1 替换数据库
        Map<String, Object> spring = (Map<String, Object>) map.get("spring");
        Map<String, Object> datasource = (Map<String, Object>) spring.get("datasource");
        Map<String, Object> druid = (Map<String, Object>) datasource.get("druid");
        druid.put("url", dataSourceProperties.getUrl());
        druid.put("username", dataSourceProperties.getUsername());
        druid.put("password", dataSourceProperties.getPassword());


        //4、生成文件
        String targetFileName = "application-prod.yml";
        String targetFilePath = rootPath + "\\src\\main\\resources\\" + targetFileName;
        DumperOptions options = new DumperOptions();
        options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
        Yaml yaml2 = new Yaml(options);
        FileWriter fw = new FileWriter(targetFilePath);
        yaml2.dump(map, fw);
    }
}

2、普通文件复制

package com.ybw.yaml.demo.generate;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * @program: yaml-demo
 * @description:
 * @author: geoffrey
 * @create: 2022-07-30 23:23
 */
@Slf4j
public class FileGenerateTest {

    /**
     * @methodName: generate
     * @return: void
     * @author: ybwei
     * @date: 2022/7/30
     **/
    @Test
    public void generate() throws IOException {
        //1、数据库配置
        DataSourceProperties dataSourceProperties = new DataSourceProperties();
        dataSourceProperties.setUrl("jdbc:mysql://localhost:3306/prod?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC");
        dataSourceProperties.setUsername("prod");
        dataSourceProperties.setPassword("prod123");
        //2、生成文件
        generateApplication(dataSourceProperties);
    }

    /**
     * @methodName: generateApplication
     * @param dataSourceProperties
     * @return: void
     * @author: ybwei
     * @date: 2022/7/30
     **/
    private void generateApplication(DataSourceProperties dataSourceProperties) throws IOException {
        //1、读取置文件,以dev配置文件为模板
        String rootPath = System.getProperty("user.dir");
        String sourceFileName = "application-dev.yml";
        String sourceFilePath = rootPath + "\\src\\main\\resources\\" + sourceFileName;
        log.info(rootPath);
        log.info(sourceFilePath);

        String content= FileUtils.readFileToString(new File(sourceFilePath), StandardCharsets.UTF_8);
        content=content.replace("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC",dataSourceProperties.getUrl());
        content=content.replace("username: root","username: "+dataSourceProperties.getUsername());
        content=content.replace("password: 123456","password: "+dataSourceProperties.getPassword());


        log.info("generateApplication content:{}", content);

        //4、生成文件
        String targetFileName = "application-prod.yml";
        String targetFilePath = rootPath + "\\src\\main\\resources\\" + targetFileName;
        FileUtils.writeStringToFile(new File(targetFilePath),content,StandardCharsets.UTF_8);
    }
}

3、源代码

share: 分享仓库 - Gitee.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

环境文件复制 的相关文章

随机推荐

  • Qt导入ui文件的方法

    1 首先对项目Test 0右键点击 添加现有文件 选择要添加的新的Design 5 ui文件 导入新的ui文件 2 打开Test 0 pro文件 会有以下形式的代码 确保其中有导入的ui文件Design 5 ui FORMS a ui b
  • Spring ioc容器创建过程(1)BeanFactory初始化

    文章目录 一 ApplicationContext 二 常见的ApplicationContext 三 ioc容器的初始化 1 AbstractApplicationContext prepareRefresh 2 AbstractAppl
  • PYTHON学习:numpy初探

    1 size itemsize size 矩阵元素数目 itemsize 矩阵每个元素的字节数 2 non zero 返回非0元素的索引 3 mean 返回矩阵所有元素的平均值 4 nan np nan值np中的空值 空值和isNone不是
  • DOS命令(windows)

    DOS命令 windows 目录 1 打开命令提示符 2 切换至根 3 当前路径 4 切换至上级路径 5 查看当前目录 6 查看文件内容 7 删除文件 8 进入长文件夹名时缩写 9 复制文件 10 移动文件 1 打开命令提示符 命令 win
  • 【opencv】Python-OpenCV自学自用笔记-上篇

    前言 本文是我在学习opencv时记录的笔记 内容较为简洁 会记录从入门到做项目这段时间的内容 最终目的是完成我的毕业设计 欢迎大家给予批评指正 本篇为第一本书 Python OpenCV从入门到精通 的笔记 前两章为安装 略过 第六章到第
  • 基于Jekyll创建免费的静态博客站点

    完整版请参考 https mazhaoxin github io 2018 08 04 Create Free Static Blog Base On Jekyll http 483v7j coding pages com 2018 08
  • JavaScript & ES6 部分面试题汇总

    1 js数据类型有哪些 基本类型 字符串 String 数字 Number 布尔 Boolean 空 Null 未定义 Undefined Symbol 唯一值 引用类型 对象 Object 数组 Array 函数 Function Set
  • 在Form窗体中,this的应用

    背景 在BHHT Bill界面中点击某个按钮时 弹出BHZX界面 并在BHZX界面中输入值 然后将BHZX界面中输入的值传递回BHHT Bill界面 在BHHT Bill界面中 属性 public string vsBZ string Em
  • Seaborn的使用以及调色板的设置

    Seaborn的使用以及调色板的设置 1 Seaborn简介 Seaborn是基于Python并且非常受欢迎的图形可视化库 并且在matplotlib的基础上进行了更高级的封装 使用作图更加方便快捷 可以通过极简的代码做出十分具有价值并且非
  • 【网络安全带你练爬虫-100练】第23练:文件内容的删除+写入

    目录 0x00 前言 0x02 解决 0x00 前言 本篇博文可能会有一点点的超级呆 0x02 解决 你是不是也会想 使用pyrhon将指定文件夹位置里面的1 txt中数据全部删除以后 gt 然后再将参数req text的值写入到1 txt
  • 前端小白HTML——1.html基础

    HTML语言的基本规则 1 1 HTML基本结构 内是头部信息 不显示在网页上 内是网页内容
  • vs2019断点调试设置断点条件

    系列文章目录 文章目录 系列文章目录 前言 一 使用条件断点 二 使用步骤 1 示例代码 前言 使用vs2019调试代码时 如果遇到for while do while逊汗语句时 而且循环次数很多时 改怎么办呢 一 使用条件断点 二 使用步
  • Ubuntu18.04使用阿里源镜像安装Docker并配置镜像加速【图文详细】

    官方安装文档 https docs docker com engine install ubuntu 阿里源安装文档 推荐 https developer aliyun com mirror docker ce spm a2c6h 1365
  • Unable to build Cython components. Please make sure Cython is installed if the torch.hub

    在我使用torch hub的时候报了如下一个错误 解决方法 参考 https github com h5py h5py issues 535 先安装 h5py 再安装 Cython pip install h5py pip install
  • 概率论中高斯分布(正态分布)介绍及C++11中std::normal_distribution的使用

    高斯分布 最常用的分布是正态分布 normal distribution 也称为高斯分布 Gaussian distribution 正态分布N x 2 呈现经典的 钟形曲线 的形状 其中中心峰的x坐标由 给出 峰的宽度受 控制 正态分布由
  • c++ 提取字符串前面数字stoi和atoi

    stoi和atoi 包含在 include lt cstdlib gt 作用是将字符串转化为int型 区别是stoi的形参是string 而atoi的形参是char 注 只是将字符串前面是数字的部分提取出来 代码可以看这篇文章 https
  • ChatGPT无限卡Cloudflare 验证你是真人

    问题 我的情况是这样 在Chrome里 打开chatGPT的网页 会无限验证你是真人 打开无痕浏览页面可以正常登录 2023 04 20 更新 新的解决方案 github上有一个油猴脚本 KeepChatGPT 可以解决这个问题 至少目前我
  • 02Tcpdump命令详解-网络抓包工具

    1 概述 今天我们要介绍的是一款网络抓包工具tcpdump 重点讨论并介绍一些有用的命令及最佳实践 tcpdump是一个功能最强大 应用最广泛的命令行数据包嗅探器或包分析工具 用于抓取或过滤制定接口接受或发送的TCP IP数据包 tcmpd
  • 42-Docker-Docker命令详解-docker build

    Docker命令详解 docker build 前言 docker build 原理 语法格式 options说明 使用示例 前言 本篇来学习下制作docker镜像的命令 docker build docker build 原理 docke
  • 环境文件复制

    1 yaml复制 package com ybw yaml demo generate import com alibaba fastjson2 JSON import lombok extern slf4j Slf4j import or