在应用svn或vss时,更新文件较多,编程实现打jar补丁包的方法
发生的原因是这样的:
系统上线或在上线前测试,每次bug修改后,都采用补丁包的方法,打个jar包后解压,更新到相应的服务器目录上去,当更新文件比较多的时候,就会发现用鼠标一个一个选择文件后右键,export - jar file 很麻烦,于是想写个程序自动打包。
原理很简单,当使用svn 或 vss 时候,我们check out 了某些文件做修改,它们是可写的,即 canWrite(). 只需要把需要打包的文件根目录,或源码根路径,例如com为 java 源码包根路径,jsp 为 jsp文件跟路径,copy到某个文件夹下面。例如 c:\\xxx,然后把本地不是canWrite()的文件删除即可,这样获得的即为 用eclipse 或 myeclipse 打完 jar 包然后解压缩后的效果。
代码如下(以 jsp 文件为例,java代码由于需要找到class文件,一般都在web-inf\classes下面,中间需要做个目录或文件转换,用java文件来判断其对应的class文件是否应该被删除,将java文件的目录前面加上web-inf\classes目录找到class文件做删除操作):
import java.io.File;
import java.util.Date;
public class CreateJarPackage
{
public static void main(String[] args){
System.out.println("begin time at " + new Date());
File file = new File("c:\\weixl");
createJarPackage(file);
System.out.println("end time at " + new Date());
}
public static void createJarPackage(File file){
if(file.isDirectory()){
File[] subFile = file.listFiles();
if (subFile.length == 0) {
file.delete(); //删除空的目录
}
for (int i = 0; i < subFile.length; i++) {
createJarPackage(subFile[i]);
}
}else{
//删除只读的文件
if(!file.canWrite()){
file.delete();
}
}
}
}