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/