歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

bash 腳本編程十四 maven自動部署

和Java自動部署的思路一樣,通過在/usr/bin下建立mvn鏈接,指向/etc/alternatives/mvn鏈接,/etc/alternatives/mvn指向/usr/mvn3鏈接,/usr/mvn3鏈接指向/usr/apache-maven-3.0.4目錄。

由於maven運行是要檢查JAVA_HOME環境變量,而JAVA_HOME環境變量的設置可以放在安裝Java的腳本中執行。

現在看一下maven的安裝腳本install.sh

  1. #!/bin/bash   
  2.   
  3. source check.sh  
  4. source ../common/tool.sh  
  5.   
  6. hasMaven  
  7. r=$?  
  8.   
  9. SRC_MAVEN_FILES=./apache-maven-3.0.4  
  10. DST_MAVEN_FILES=/usr/apache-maven-3.0.4  
  11. #!/bin/bash   
  12.   
  13. source /etc/environment  
  14.   
  15. if [ $r -eq 1 ]  
  16. then  
  17.     echo "maven was installed"  
  18. else  
  19.     echo "maven was not installed"  
  20.     copyFolder $SRC_MAVEN_FILES $DST_MAVEN_FILES  
  21.     createLink $DST_MAVEN_FILES /usr/mvn3  
  22.     createLink '/usr/mvn3/bin/mvn' '/etc/alternatives/mvn'  
  23.   
  24.     createLink /etc/alternatives/mvn /usr/bin/mvn  
  25. fi  

tool.sh腳本位於common目錄裡面。整個自動化部署的目錄結構如下:

  1. chenshu@sloop2:~/work/189/appengine/deploy$ tree -L 2  
  2. .  
  3. ├── common  
  4. │   └── tool.sh  
  5. ├── java  
  6. │   ├── check.sh  
  7. │   ├── install.sh  
  8. │   ├── jdk1.6.0_35  
  9. │   └── readme  
  10. ├── maven  
  11. │   ├── apache-maven-3.0.4  
  12. │   ├── check.sh  
  13. │   └── install.sh  
  14. └── readme  
以後還會增加其他的子項目,比如mysql, glassfish, mongodb, nginx,或許有天我會將之建立一個開源項目。 :)

tool.sh腳本如下:

  1. #!/bin/bash  
  2.   
  3. function copyFolder {  
  4.   
  5.     if [ -d "$2" ]  
  6.     then  
  7.     echo "$2 folder exists already, stop copying."  
  8.     else  
  9.     echo "$2 folder doesn't exists, start copying..."  
  10.     cp -r $1 $2  
  11.     fi  
  12. }  
  13.   
  14. #create a link($2) to file($1)  
  15. function createLink {  
  16.   
  17.     if [ -f "$2" ]  
  18.     then  
  19.     echo "$2 link exists already, removing it..."  
  20.     rm $2  
  21.     else  
  22.     echo "$2 link doesn't exists, creating it..."  
  23.     fi  
  24.     echo "creating link: $2 to $1"  
  25.     ln -s $1 $2  
  26. }  
  27.   
  28. # $1 variable name  
  29. # $2 expected value  
  30. # put this into /etc/environment if not found  
  31. function setEnv {  
  32.     source /etc/environment  
  33.     if [ "${!1}" = "$2" ]  
  34.     then  
  35.     echo "$1 is correct: $2"  
  36.     else  
  37.     echo "$1 is wrong: ${!1} != $2"  
  38.   
  39.     h=`grep "$1=\"$2\"" /etc/environment`  
  40.     if [ -n "$h" ]  
  41.     then  
  42.         echo "/etc/environment has $1 already"  
  43.     else  
  44.         echo "Adding $1 into /etc/environment..."  
  45.         echo "$1=\"$2\"" >> /etc/environment  
  46.     fi  
  47.     source /etc/environment  
  48.     fi  
  49. }  

maven目錄下還有一個check.sh腳本:

  1. #!/bin/bash   
  2.   
  3. #check java is available in this session  
  4. function hasMaven {  
  5.     v=`mvn -version 2>&1`  
  6.   
  7.     echo 'check maven ...'  
  8.   
  9.     pos=`expr match "$v" 'Apache Maven 3.0.4'`  
  10.     if [ $pos -gt 0 ]  
  11.     then  
  12.     return 1  
  13.     else  
  14.     return 0  
  15.     fi  
  16. }  
到現在為止,用模塊化的方式編寫bash,讓後面的工作可以復用前面的腳本。感覺輕松多了。
Copyright © Linux教程網 All Rights Reserved