2025-05-17

功能簡介:


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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *