开发利器之一键文件同步工具

本工程主要解决两个问题:
1.复制svn提测的不规则信息转化为标准格式提供给测试人员部署
2.将工程的dev分支变更一键直接同步到release分支,避免人工误差和繁琐浪费时间

将为开发人员自动同步代码每天节省20分钟,心情愉悦提升30%,工程为maven工程,附件有全部源码供大家作为工具使用和学习 还等什么,工具已开源,下载链接: http://download.csdn.net/detail/lw4135/9752593

必要注释:
1.FileSyn为工程运行的主入口
2.need_synchronize_files.txt:待同步文件名列表,直接从svn提测信息复制过来的
3.config.properites为工程运行配置文件,NEED_SYN_FILE_PATH:为待同步文件名列表的路径,
SRC_PATH:源路径,DEST_PATH:目的路径。
4.工程运行完毕会在控制台打印运行结果,复制失败的注意检查路径
以下为运行日志示例:
一、Java文件:(1个)
/java/com/ivan/common/controllers/testController.java
二、Html文件:(1个)
/views/test/test.html
三、文件夹:(1个)
/views/test
===============以上为提测列表复制给测试人员部署===============
待同步文件总个数:3,文件同步日志:
/java/com/ivan/common/controllers/testController.java复制完成
/views/test/test.html复制完成
/views/test复制完成
运行完毕!


部分源码:

package ivan;

import ivan.util.ConfigPropUtil;
import ivan.util.ReadFilesUtil;

import java.io.File;
import java.util.HashMap;
import java.util.List;

import org.apache.commons.io.FileUtils;

/**
 * 文件复制-工程主函数入口
 * 
 */
public class FileSyn {
    /**
     * 待同步文件列表的路径
     */
    public final static String NEED_SYN_FILE_PATH =  ConfigPropUtil.getPropertyValue("NEED_SYN_FILE_PATH");
    // java文件路径举例
    // D:\workspace10\dev\src\main\java\com\ivan\common\controllers\TestController.java
    // html文件路径举例
    // D:\workspace10\dev\src\main\webapp\views\test\m\changeCity.html
    /**
     * 待复制的源文件路径头
     */
    public static final String SRC_PATH = ConfigPropUtil.getPropertyValue("SRC_PATH");
    /**
     * 复制目的地文件路径头
     */
    public static final String DEST_PATH =  ConfigPropUtil.getPropertyValue("DEST_PATH");

    public static void main(String[] args) {
        HashMap> fileMap = ReadFilesUtil.getFileMap(NEED_SYN_FILE_PATH);
        ReadFilesUtil.printFileMap(fileMap);
        List javaList = fileMap.get(0);// Java类型文件
        List htmlList = fileMap.get(1);// html类型文件
        List packList = fileMap.get(2);// 其他文件或文件夹
        System.out.println("===============以上为提测列表复制给测试人员部署=============== \n 待同步文件总个数:"+(javaList.size()+htmlList.size()+packList.size())+",文件同步日志:");
        String errorMsg="";
        errorMsg+=copyFileList(javaList, 0);
        errorMsg+=copyFileList(htmlList, 1);
        errorMsg+=copyFileList(packList, 2);
        if(!"".equals(errorMsg)){
            System.err.println("以下文件复制失败,请检查路径是否正确:\n"+errorMsg);
        }
        System.out.println("运行完毕!");
    }

    /**
     * 文件复制
     * @param type 类型
     * @param fileName文件名称
     */
    public static String copyFile(int type, String fileName) {
        String srcPath = SRC_PATH;
        String destPath = DEST_PATH;
        if (fileName.indexOf("/views/")!=-1) {
            srcPath += "\\webapp";
            destPath += "\\webapp";
        }
        String srcFile = srcPath + fileName;
        String destFile = destPath + fileName;
        try {
            if(type==2){
                FileUtils.copyDirectory(new File(srcFile), new File(destFile));
            }else {
                FileUtils.copyFile(new File(srcFile), new File(destFile));
            }
            System.out.println(fileName + "复制完成");
        } catch (Exception e) {
            e.printStackTrace();
            return "fileName:"+fileName+" 源文件:" + srcFile + " 目的文件:" + destFile+"\n";
        }
        return "";
    }

    /**
     * 复制文件集合
     * @param list文件名称
     * @param type 类型
     */
    public static String copyFileList(List list, int type) {
        String errorMsg="";
        for (String str : list) {
            errorMsg+=copyFile(type, str);
        }
        return errorMsg;
    }

}
package ivan.util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 *分类读取待同步文件工具类 
 */
public class ReadFilesUtil {
    public final static String filePath = ConfigPropUtil.getPropertyValue("NEED_SYN_FILE_PATH");
    /**
     * 根据文件路径得到各种类型文件集合
     * 
     * @param filePath
     * @return
     */
    public static HashMap> getFileMap(String filePath) {
        HashMap> fileMap = new HashMap>();
        try {
            List javaList = new ArrayList();// Java类型文件
            List htmlList = new ArrayList();// html类型文件
            List packList = new ArrayList();// 其他文件或文件夹
            FileReader fr = new FileReader(filePath);
            BufferedReader br = new BufferedReader(fr);
            String s;
            while ((s = br.readLine()) != null) {
                if (s.indexOf("src/main/") != -1) {
                    // 路径处理
                    s = s.substring(s.indexOf("src/main/")).replace("src/main", "").replace("/webapp", "");
                    if (s.endsWith(".html")) {
                        htmlList.add(s);
                    } else if (s.endsWith(".java")) {
                        javaList.add(s);
                    } else {
                        packList.add(s);
                    }
                }
            }
            fileMap.put(0, javaList);
            fileMap.put(1, htmlList);
            fileMap.put(2, packList);
            br.close();
            return fileMap;
        } catch (Exception e) {
            e.printStackTrace();
            return fileMap;
        }
    }

    /**
     * 根据文件路径得到各种类型文件集合
     * 
     * @param filePath
     * @return
     */
    public static void printFileMap(HashMap> fileMap) {
        try {
            List javaList = fileMap.get(0);// Java类型文件
            List htmlList = fileMap.get(1);// html类型文件
            List packList = fileMap.get(2);// 其他文件或文件夹
            // 输出
            if (javaList.size() > 0) {
                System.out.println("一、Java文件:(" + javaList.size() + "个)");
                for (String str : javaList) {
                    System.out.println(str);
                }
            }
            if (htmlList.size() > 0) {
                System.out.println("二、Html文件:(" + htmlList.size() + "个)");
                for (String str : htmlList) {
                    System.out.println(str);
                }
            }
            if (packList.size() > 0) {
                System.out.println("三、文件夹:(" + packList.size() + "个)");
                for (String str : packList) {
                    System.out.println(str);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 测试读取文件列表
     * @param args
     */
    public static void main(String[] args) {
        HashMap> fileMap = getFileMap(filePath);
        printFileMap(fileMap);
    }
}

还等什么,工具已开源,下载链接:
http://download.csdn.net/detail/lw4135/9752593

你可能感兴趣的:(工具类)