功能简介:
aj.sh 自动把你版本库下处于checkOut状态的非java文件、java源码编译后的class文件,塞到指定的jar文件中。
aj24.sh 自动把你最近24小时内修改过的的非java文件、java源码编译后的class文件,塞到指定的jar文件中。
运行方式:
1、用文本编辑器打开aj.sh、aj24.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' -o -name '*.keep' -o -name '*.keep.[0-9]*' -o -name '*.contrib' -o -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