war包的部署問題不大,這里記錄jar包的部署過程:
1:jar包的體積過大問題
pom.xml參考以下配置(依賴包會分離到target/lib/,jar包體積由幾十M縮小到幾k)
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.ylcloud.admin.AdminWebApplication</mainClass> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> </plugins> </build>
2:
對各個項目的分離出來的lib要做一下整合,然后上傳到服務器啟動類的根目錄(要注意的是一般項目架構定了之后lib包基本是沒什么改動的,只有個別模塊的依賴包會持續更新,后續在jenkins的post step傳上去就可以了)
3:
結合shell進行自動部署,主要是3個腳本,這里只做一下工作記錄:
第一個是進程結束腳本:
#!/bin/bash echo "Stopping SpringBoot Application for CMP" #ls pid=`ps -ef | grep $1* | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then kill -9 $pid else echo "no pid" fi echo "run end"
第二個是項目監控腳本(保證項目按順序執行)
#!/bin/bash echo "start script ................" file=$1 while [ -f $file ] do echo "find log ........." result=`grep "啟動成功" $file` if [[ "$result" != "" ]] then echo "springboot start ........." break else echo "running ......." sleep 1s fi done echo "springboot Started..........."
第三個是項目啟動腳本:
#!/bin/bash source /etc/profile jarversion='-0.0.1-SNAPSHOT.jar' basepath='/cjh/yl_cloud/' runjar(){ sh test.sh $1 nohup java -jar $4 $1$jarversion > $basepath$2 & 2>&1 & sh tt.sh $basepath$2 echo $3 } runjar 'ylcloud-customer-service' 'nohup.out' '核心模塊啟動完成' '-Xms10m -Xmx500m' echo '項目啟動成功'
轉載請注明博客出處:http://www.cnblogs.com/cjh-notes/