通过svn提交日志打出项目增量升级包

项目是myeclipse8.6工具开发,添加svn插件。因为某些原因,项目升级的时候不能直接覆盖整个项目,所以采用增量升级的方式。

步骤1:导出svn指定时间范围内提交日志

1.1 鼠标项目名称右键,Team-》显示资源历史记录

通过svn提交日志打出项目增量升级包_第1张图片

1.2 默认显示最近一段时间的日志,可以通过筛选的方式显示指定时间段内的日志

通过svn提交日志打出项目增量升级包_第2张图片

1.3 按住shift键选择日志记录,鼠标右键 导出日志

通过svn提交日志打出项目增量升级包_第3张图片

1.4 将提交日志存储到本地文件

通过svn提交日志打出项目增量升级包_第4张图片

2. 采用文件复制的思路 根据日志文件提取出对应的文件以及文件路径

package com.test.build;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
 
public class FileUtils {
	 /**
     * 拷贝文件
     * @param file 想要读取svn日志的文件对象
     * @param appDir 工程所在的文件夹的路径
     * @param desDir 导出所在文件夹的路径
     * @return 返回文件内容
     */
    public static String copyFiles(File file,String appDir,String projectName,String desDir){
        StringBuilder result = new StringBuilder();
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            String s = null;
            int size=1;
            while((s = br.readLine())!=null){//使用readLine方法,一次读一行
            	int index=s.indexOf(projectName);
            	if (index<0) {
					continue;
				}
                s=s.substring(index);
                //把java文件路径替换成编译好的classes文件的路径
                // WebRoot    myeclipse
                // WebContent eclipse
                if (s.contains("/src/")) {
					s=s.replace("/src/","/WebRoot/WEB-INF/classes/");
					s=s.replace(".java",".class");
				}
                //过滤掉重复的源文件目录
                if (result.indexOf(s)>-1) {
					continue;
				}
                String desStr=desDir+s;
                File srcFile = new File(appDir+s);    //源文件对象
                File destFile = new File(desStr);  //目标文件对象
                if (!(srcFile.exists())) {  //判断源文件是否存在
                	System.out.println(s+"文件不存在.......");
                	continue;  
                }
                if (!(destFile.exists())) {  //判断目标文件是否存在
                	desStr=desStr.substring(0,desStr.lastIndexOf("/"));
                    File dir = new File(desStr);
                    //创建文件夹
                    if (!dir.exists()) {
						dir.mkdirs();
					}
                    //创建文件
                	destFile.createNewFile();  //如果不存在则创建新文件
                }
                //使用源文件对象创建文件输入流对象
                FileInputStream fis = new FileInputStream(srcFile);
                //使用目标文件对象创建文件输出流对象
                FileOutputStream fos = new FileOutputStream(destFile);
                byte[] buf = new byte[(int)srcFile.length()];  //创建字节数组,作为临时缓冲
                System.out.println("开始复制文件..."+size);
                //while (fis.read(buf) != -1) {  //循环从文件输入流中读取数据
                fis.read(buf);
                fos.write(buf);    //写入到文件输出流中
                //}
                System.out.println("文件:"+s);
                System.out.println("文件复制成功!");
                fis.close();    //关闭流
                fos.close();
            	//result.append(s+System.lineSeparator());
                result.append(s+System.getProperty("line.separator"));
            	size++;
            }
            size--;
            System.out.println("文件复制总数: "+size+"个!");
            br.close();    
        }catch(Exception e){
            e.printStackTrace();
        }
        return result.toString();
    }
    
    public static void main(String[] args){
    	//工程所在的文件夹
    	String appDir="D:/sdjxd/";
    	//工程名称
    	String projectName="cq_control";
    	//导出所在文件夹
    	String desDir="C:/Users/Administrator/Desktop/0509升级包/";
    	//svn日志存放位置
        File file = new File("C:/Users/Administrator/Desktop/0509升级包/changeLog.txt");
        copyFiles(file,appDir,projectName,desDir);
    }
 
}

至此项目增量升级包处理完成

你可能感兴趣的:(javaweb)