Natural

 

[shell]在windows下自动把你修改过的文件塞到指定的jar文件中

功能简介:

aj.sh        自动把你版本库下处于checkOut状态的非java文件、java源码编译后的class文件,塞到指定的jar文件中。

aj24.sh    自动把你最近24小时内修改过的的非java文件、java源码编译后的class文件,塞到指定的jar文件中。


运行方式:

1、用文本编辑器打开aj.shaj24.sh,更改以下几个变量:

jar_file  指定jar文件的完整路径(注意路径分隔符一律用/

bin_dir   指定class所在的bin完整路径

src_dir   指定源码所在的src完整路径

2、打开cygwin,进入脚本文件所在的目录,运行如下命令:

sh aj.sh

sh aj24.sh

 

ps

指定cygwin打开时的默认路径:

新建一个环境变量HOME,设置为脚本文件所在的目录。

这样可以更加方便、快速地运行脚本。

路径分割符用‘/,磁盘符用cygdrive表示。eg d:\shell      ——》    /cygdrive/d/shell


环境依赖:

JDK/JRE

Cygwin

cywin安装:进入下载页http://cygwin.com/install.html,将“setup.exe”下载到本地运行,一路默认即可。

安装参考文档:http://goo.gl/eXfzx

cygwin常用命令及find命令说明

 


缺陷:

1、            如果你修改的是需要转义的中文资源文件,需要自己去转义后再覆盖过去。

2、            如果你修改的是java文件中的非内部类,也需要手动去找到该class类,再塞到jar文件去。

 

 

脚本文件:

 

aj.sh (将第16行注释掉,第17行去掉注释,即为“aj24.sh”)

 1 #!/bin/sh
 2 # Auto zip the files which are checked out or modified to the target jar file.
 3 
 4 # Note: use '/' as separator in directory
 5 # target jar file
 6 jar_file='G:/demo.jar'
 7 
 8 
 9 # bin directory of compiled class files
10 bin_dir='D:/workspace/demo/bin'
11 
12 # src directory of source files
13 src_dir='D:/workspace/demo/src'
14 
15 
16 condition='-perm 644'
17 #condition=' -mtime 0'
18 c_j=0
19 c_nj=0
20 c_c=0
21 function count_javaFiles
22 {
23     let "c_j=$c_j + 1"
24 }
25 function count_nonJavaFiles
26 {
27     let "c_nj=$c_nj + 1"
28 }
29 function count_classFiles
30 {
31     let "c_c=$c_c + 1"
32 }
33 
34 function inspectZip
35 {
36     local fileName=$1
37     local dir_pre=$2
38     local line
39     local list
40     local myDir_pre
41     cd $bin_dir
42     list=` find . -name "${fileName}[$.]*class" `
43         
44 for line in $list
45 do
46     myDir_pre=${line%/*}
47     if [ $myDir_pre = $dir_pre ]
48     then
49         jar -uvf $jar_file $line
50         count_classFiles
51     fi
52 done
53 }
54 
55 function easyZip
56 {
57     local file=$1
58     jar -uvf $jar_file $file
59     count_nonJavaFiles
60 }
61 
62 cd $src_dir
63 list=`find . -type f $condition ! \-name '*.java' --name '*.keep' --name '*.keep.[0-9]*' --name '*.contrib' --name '*.contrib.[0-9]*' \)`
64 for line in $list
65 do
66     easyZip $line
67 done
68 
69 list=`find . -type f $condition -name '*.java' `
70 for line in $list
71 do
72     dir_pre=${line%/*}
73     fileName=`echo ${line##*/} | cut -d '.' -f1`
74     
75     inspectZip $fileName $dir_pre
76     count_javaFiles
77 done
78 
79 
80 echo "non-java files: $c_nj"
81 echo "java files: $c_j"
82 echo "class files: $c_c"
83 echo "total files:  $[$c_nj + $c_c]"
84 

posted on 2011-06-02 11:52 此号已被删 阅读(2333) 评论(1)  编辑  收藏 所属分类: JAVALinux

评论

# re: [shell]在windows下自动把你修改过的文件塞到指定的jar文件中 2011-06-20 11:22 秦焜

这个非常有用!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(8)

随笔分类(83)

随笔档案(78)

文章档案(2)

相册

收藏夹(7)

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜