读书人

在应用svn或vss时更新文件较多编程

发布时间: 2012-12-22 12:05:06 作者: rapoo

在使用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();
??????????? }
??????? }
??? }

}

?

???

????

读书人网 >编程

热点推荐