歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> bash 腳本編程十四 maven自動部署

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

日期:2017/3/1 10:09:40   编辑:Linux編程

和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. source check.sh
  3. source ../common/tool.sh
  4. hasMaven
  5. r=$?
  6. SRC_MAVEN_FILES=./apache-maven-3.0.4
  7. DST_MAVEN_FILES=/usr/apache-maven-3.0.4
  8. #!/bin/bash
  9. source /etc/environment
  10. if [ $r -eq 1 ]
  11. then
  12. echo "maven was installed"
  13. else
  14. echo "maven was not installed"
  15. copyFolder $SRC_MAVEN_FILES $DST_MAVEN_FILES
  16. createLink $DST_MAVEN_FILES /usr/mvn3
  17. createLink '/usr/mvn3/bin/mvn' '/etc/alternatives/mvn'
  18. createLink /etc/alternatives/mvn /usr/bin/mvn
  19. 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. function copyFolder {
  3. if [ -d "$2" ]
  4. then
  5. echo "$2 folder exists already, stop copying."
  6. else
  7. echo "$2 folder doesn't exists, start copying..."
  8. cp -r $1 $2
  9. fi
  10. }
  11. #create a link($2) to file($1)
  12. function createLink {
  13. if [ -f "$2" ]
  14. then
  15. echo "$2 link exists already, removing it..."
  16. rm $2
  17. else
  18. echo "$2 link doesn't exists, creating it..."
  19. fi
  20. echo "creating link: $2 to $1"
  21. ln -s $1 $2
  22. }
  23. # $1 variable name
  24. # $2 expected value
  25. # put this into /etc/environment if not found
  26. function setEnv {
  27. source /etc/environment
  28. if [ "${!1}" = "$2" ]
  29. then
  30. echo "$1 is correct: $2"
  31. else
  32. echo "$1 is wrong: ${!1} != $2"
  33. h=`grep "$1=\"$2\"" /etc/environment`
  34. if [ -n "$h" ]
  35. then
  36. echo "/etc/environment has $1 already"
  37. else
  38. echo "Adding $1 into /etc/environment..."
  39. echo "$1=\"$2\"" >> /etc/environment
  40. fi
  41. source /etc/environment
  42. fi
  43. }

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

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