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

eclipse实现JavaWeb项目 增量打包

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

很多情况下,项目是不允许全量发布的,所以你得把有做修改的文件一个个挑出来,如果有成千上百的文件,你是不是要头大了? 以下方法应该可以让你得到解救!前提是你是用装有svn plugin的eclipse上做开发。

 

      第一步,用svn生成项目的补丁文件。

     

 

选中你需要增量升级的文件,点击完成。

 

       

   运行如下代码

 

Java代码  收藏代码

  1. package verysoft.freepath;  
  2. import java.io.BufferedInputStream;  
  3. import java.io.BufferedOutputStream;  
  4. import java.io.BufferedReader;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileOutputStream;  
  8. import java.io.IOException;  
  9. import java.io.InputStreamReader;  
  10. import java.util.ArrayList;  
  11. import java.util.List;  
  12.   
  13. public class FreePatchUtil {  
  14.   
  15.     public static String patchFile="D:/patch.txt";//补丁文件,由eclipse svn plugin生成  
  16.       
  17.     public static String projectPath="D:/workspace/FordClubJeeCms";//项目文件夹路径  
  18.       
  19.     public static String webContent="WebContent";//web应用文件夹名  
  20.       
  21.     public static String classPath="D:/workspace/FordClubJeeCms/build";//class存放路径  
  22.       
  23.     public static String desPath="C:/Users/xuwen/Desktop/update_pkg";//补丁文件包存放路径  
  24.       
  25.     public static String version="20140711";//补丁版本  
  26.       
  27.       
  28.     /** 
  29.      * @param args 
  30.      * @throws Exception  
  31.      */  
  32.     public static void main(String[] args) throws Exception {  
  33.         copyFiles(getPatchFileList());  
  34.     }  
  35.       
  36.     public static List<String> getPatchFileList() throws Exception{  
  37.         List<String> fileList=new ArrayList<String>();  
  38.         FileInputStream f = new FileInputStream(patchFile);   
  39.         BufferedReader dr=new BufferedReader(new InputStreamReader(f,"utf-8"));  
  40.         String line;  
  41.         while((line=dr.readLine())!=null){   
  42.             if(line.indexOf("Index:")!=-1){  
  43.                 line=line.replaceAll(" ","");  
  44.                 line=line.substring(line.indexOf(":")+1,line.length());  
  45.                 fileList.add(line);  
  46.             }  
  47.         }   
  48.         return fileList;  
  49.     }  
  50.       
  51.     public static void copyFiles(List<String> list){  
  52.           
  53.         for(String fullFileName:list){  
  54.             if(fullFileName.indexOf("src/")!=-1){//对源文件目录下的文件处理  
  55.                 String fileName=fullFileName.replace("src","");  
  56.                 fullFileName=classPath+fileName;  
  57.                 if(fileName.endsWith(".java")){  
  58.                     fileName=fileName.replace(".java",".class");  
  59.                     fullFileName=fullFileName.replace(".java",".class");  
  60.                 }  
  61.                 String tempDesPath=fileName.substring(0,fileName.lastIndexOf("/"));  
  62.                 String desFilePathStr=desPath+"/"+version+"/WEB-INF/classes"+tempDesPath;  
  63.                 String desFileNameStr=desPath+"/"+version+"/WEB-INF/classes"+fileName;  
  64.                 File desFilePath=new File(desFilePathStr);  
  65.                 if(!desFilePath.exists()){  
  66.                     desFilePath.mkdirs();  
  67.                 }  
  68.                 copyFile(fullFileName, desFileNameStr);  
  69.                 System.out.println(fullFileName+"复制完成");  
  70.             }else{//对普通目录的处理  
  71.                 String desFileName=fullFileName.replaceAll(webContent,"");  
  72.                 fullFileName=projectPath+"/"+fullFileName;//将要复制的文件全路径  
  73.                 String fullDesFileNameStr=desPath+"/"+version+desFileName;  
  74.                 String desFilePathStr=fullDesFileNameStr.substring(0,fullDesFileNameStr.lastIndexOf("/"));  
  75.                 File desFilePath=new File(desFilePathStr);  
  76.                 if(!desFilePath.exists()){  
  77.                     desFilePath.mkdirs();  
  78.                 }  
  79.                 copyFile(fullFileName, fullDesFileNameStr);  
  80.                 System.out.println(fullDesFileNameStr+"复制完成");  
  81.             }  
  82.               
  83.         }  
  84.           
  85.     }  
  86.   
  87.     private static void copyFile(String sourceFileNameStr, String desFileNameStr) {  
  88.         File srcFile=new File(sourceFileNameStr);  
  89.         File desFile=new File(desFileNameStr);  
  90.         try {  
  91.             copyFile(srcFile, desFile);  
  92.         } catch (IOException e) {  
  93.             e.printStackTrace();  
  94.         }  
  95.     }  
  96.       
  97.   
  98.       
  99.       
  100.     public static void copyFile(File sourceFile, File targetFile) throws IOException {  
  101.         BufferedInputStream inBuff = null;  
  102.         BufferedOutputStream outBuff = null;  
  103.         try {  
  104.             // 新建文件输入流并对它进行缓冲  
  105.             inBuff = new BufferedInputStream(new FileInputStream(sourceFile));  
  106.   
  107.             // 新建文件输出流并对它进行缓冲  
  108.             outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));  
  109.   
  110.             // 缓冲数组  
  111.             byte[] b = new byte[1024 * 5];  
  112.             int len;  
  113.             while ((len = inBuff.read(b)) != -1) {  
  114.                 outBuff.write(b, 0, len);  
  115.             }  
  116.             // 刷新此缓冲的输出流  
  117.             outBuff.flush();  
  118.         } finally {  
  119.             // 关闭流  
  120.             if (inBuff != null)  
  121.                 inBuff.close();  
  122.             if (outBuff != null)  
  123.                 outBuff.close();  
  124.         }  
  125.     }  
  126.       
  127. }  

save_snippets.png

 

注意,以下部份请按照实际情况填写

 

Java代码  收藏代码

  1. public static String patchFile="D:/patch.txt";//补丁文件,由eclipse svn plugin生成  
  2.   
  3. public static String projectPath="D:/workspace/FordClubJeeCms";  
  4.   
  5. public static String webContent="WebContent";//web应用文件夹名  
  6.   
  7. public static String classPath="D:/workspace/FordClubJeeCms/build";//class存放路径  
  8.   
  9. public static String desPath="C:/Users/xuwen/Desktop/update_pkg";//补丁文件包存放路径  
  10.   
  11. public static String version="20140711";//补丁版本  

save_snippets.png

 

   好了,运行后得到结果

 

 

 如果有多个人都修改了代码,那么每个人在提交代码之前先按第一步生成补丁文件再提交。当所有人都提交代码后,在一台电脑上更新所有代码,再在这台电脑上用以上代码运行所有人生成的补丁文件即可。

转载于:https://my.oschina.net/276172622/blog/1488868

相关文章:

  • Dubbo框架介绍与安装 Dubbo 注册中心(Zookeeper-3.4.6)
  • 鼠标悬停在图片时出现×。然后删除图片
  • Laravel的本地化
  • File:方法(具体)
  • bzoj 2510 弱题 矩阵乘
  • CentOS的进程管理二
  • 深入浅出iOS事件机制
  • phpStudy配置多站点多域名步骤,及遇到的403错误解决方式
  • 模拟ajax实现网络爬虫——HtmlUnit
  • 关于冰岛足球的段子
  • Hadoop简单介绍
  • 【菜鸟也疯狂UML系列】——概述
  • 最新发布:数据库防火墙技术市场调研报告
  • 《Android应用开发攻略》——1.4 在Eclipse中创建“Hello, World”应用程序
  • HBase最佳实践-集群规划
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android 架构优化~MVP 架构改造
  • ES6简单总结(搭配简单的讲解和小案例)
  • fetch 从初识到应用
  • JavaScript函数式编程(一)
  • Js基础知识(四) - js运行原理与机制
  • Netty源码解析1-Buffer
  • Solarized Scheme
  • Travix是如何部署应用程序到Kubernetes上的
  • Twitter赢在开放,三年创造奇迹
  • 初探 Vue 生命周期和钩子函数
  • 缓存与缓冲
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 经典排序算法及其 Java 实现
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用common-codec进行md5加密
  • 算法-图和图算法
  • 温故知新之javascript面向对象
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 阿里云API、SDK和CLI应用实践方案
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #1014 : Trie树
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (arch)linux 转换文件编码格式
  • (TOJ2804)Even? Odd?
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (转)详解PHP处理密码的几种方式
  • (转载)虚函数剖析
  • .net core 控制台应用程序读取配置文件app.config
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .sys文件乱码_python vscode输出乱码
  • @ConfigurationProperties注解对数据的自动封装
  • @RunWith注解作用
  • [04]Web前端进阶—JS伪数组
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [android] 手机卫士黑名单功能(ListView优化)
  • [android学习笔记]学习jni编程
  • [BT]BUUCTF刷题第8天(3.26)