eclipse實(shí)現(xiàn)JavaWeb應(yīng)用增量打包
2023-04-12
很多情況下,項(xiàng)目是不允許全量發(fā)布的,所以你得把有做修改的文件一個(gè)個(gè)挑出來(lái),如果有成千上百的文件,你是不是要頭大了? 以下方法應(yīng)該可以讓你得到解救!前提是你是用裝有svn plugin的eclipse上做開(kāi)發(fā)。
第一步,用svn生成項(xiàng)目的補(bǔ)丁文件。

選中你需要增量升級(jí)的文件,點(diǎn)擊完成。

運(yùn)行如下代碼
package verysoft.freepath;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class FreePatchUtil {
public static String patchFile="D:/patch.txt";//補(bǔ)丁文件,由eclipse svn plugin生成
public static String projectPath="D:/workspace/FordClubJeeCms";//項(xiàng)目文件夾路徑
public static String webContent="WebContent";//web應(yīng)用文件夾名
public static String classPath="D:/workspace/FordClubJeeCms/build";//class存放路徑
public static String desPath="C:/Users/xuwen/Desktop/update_pkg";//補(bǔ)丁文件包存放路徑
public static String version="20140711";//補(bǔ)丁版本
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
copyFiles(getPatchFileList());
}
public static List getPatchFileList() throws Exception{
List fileList=new ArrayList();
FileInputStream f = new FileInputStream(patchFile);
BufferedReader dr=new BufferedReader(new InputStreamReader(f));
String line;
while((line=dr.readLine())!=null){
if(line.indexOf("Index:")!=-1){
line=line.replaceAll(" ","");
line=line.substring(line.indexOf(":")+1,line.length());
fileList.add(line);
}
}
return fileList;
}
public static void copyFiles(List list){
for(String fullFileName:list){
if(fullFileName.indexOf("src/")!=-1){//對(duì)源文件目錄下的文件處理
String fileName=fullFileName.replace("src","");
fullFileName=classPath+fileName;
if(fileName.endsWith(".java")){
fileName=fileName.replace(".java",".class");
fullFileName=fullFileName.replace(".java",".class");
}
String tempDesPath=fileName.substring(0,fileName.lastIndexOf("/"));
String desFilePathStr=desPath+"/"+version+"/WEB-INF/classes"+tempDesPath;
String desFileNameStr=desPath+"/"+version+"/WEB-INF/classes"+fileName;
File desFilePath=new File(desFilePathStr);
if(!desFilePath.exists()){
desFilePath.mkdirs();
}
copyFile(fullFileName, desFileNameStr);
System.out.println(fullFileName+"復(fù)制完成");
}else{//對(duì)普通目錄的處理
String desFileName=fullFileName.replaceAll(webContent,"");
fullFileName=projectPath+"/"+fullFileName;//將要復(fù)制的文件全路徑
String fullDesFileNameStr=desPath+"/"+version+desFileName;
String desFilePathStr=fullDesFileNameStr.substring(0,fullDesFileNameStr.lastIndexOf("/"));
File desFilePath=new File(desFilePathStr);
if(!desFilePath.exists()){
desFilePath.mkdirs();
}
copyFile(fullFileName, fullDesFileNameStr);
System.out.println(fullDesFileNameStr+"復(fù)制完成");
}
}
}
private static void copyFile(String sourceFileNameStr, String desFileNameStr) {
File srcFile=new File(sourceFileNameStr);
File desFile=new File(desFileNameStr);
try {
copyFile(srcFile, desFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void copyFile(File sourceFile, File targetFile) throws IOException {
BufferedInputStream inBuff = null;
BufferedOutputStream outBuff = null;
try {
// 新建文件輸入流并對(duì)它進(jìn)行緩沖
inBuff = new BufferedInputStream(new FileInputStream(sourceFile));
// 新建文件輸出流并對(duì)它進(jìn)行緩沖
outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));
// 緩沖數(shù)組
byte[] b = new byte[1024 * 5];
int len;
while ((len = inBuff.read(b)) != -1) {
outBuff.write(b, 0, len);
}
// 刷新此緩沖的輸出流
outBuff.flush();
} finally {
// 關(guān)閉流
if (inBuff != null)
inBuff.close();
if (outBuff != null)
outBuff.close();
}
}
}
注意,以下部份請(qǐng)按照實(shí)際情況填寫(xiě)
public static String patchFile="D:/patch.txt";//補(bǔ)丁文件,由eclipse svn plugin生成
public static String projectPath="D:/workspace/FordClubJeeCms";
public static String webContent="WebContent";//web應(yīng)用文件夾名
public static String classPath="D:/workspace/FordClubJeeCms/build";//class存放路徑
public static String desPath="C:/Users/xuwen/Desktop/update_pkg";//補(bǔ)丁文件包存放路徑
public static String version="20140711";//補(bǔ)丁版本
好了,運(yùn)行后得到結(jié)果

如果有多個(gè)人都修改了代碼,那么每個(gè)人在提交代碼之前先按第一步生成補(bǔ)丁文件再提交。當(dāng)所有人都提交代碼后,在一臺(tái)電腦上更新所有代碼,再在這臺(tái)電腦上用以上代碼運(yùn)行所有人生成的補(bǔ)丁文件即可。
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽?lái)源及作者名字。
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com





