springBoot依赖包分离并使用bash脚本发布

      springboot发布默认打成的jar包都是很大的,自己的测试工具项目系统没有持续集成,就是打包上传服务器手动发布,每次上传发布都要花点时间(靠网络)。

      研究了下springboot依赖包分离的maven插件,最后就是将项目的jar包缩减,将依赖的jar包不打进去,将所有的依赖包上传到linux文件夹里,然后就是用上传轻量级的jar到服务器。写好批处理文件,直接运行批处理文件就可以实现发布了。

  1. 实例

本地项目打包pom.xml文件插件为依赖包分离,资源包分离,第一次打包将lib放在linux上,没有变化的话,jar不用再更新,有则更新,打包完成之后,将执行jar和resource文件夹一起打包zip,上传至linux上的批处理同目录下,然后执行批处理文件即可完成发布

pom.xml文件打包插件

<plugins>

<!--打包jar-->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<configuration>

<!--不打包资源文件-->

<excludes>

<exclude>*.**</exclude>

<exclude>*/*.xml</exclude>

</excludes>

<archive>

<manifest>

<addClasspath>true</addClasspath>

<!--MANIFEST.MF 中 Class-Path 加入前缀-->

<classpathPrefix>lib/</classpathPrefix>

<!--jar包不包含唯一版本标识-->

<useUniqueVersions>false</useUniqueVersions>

<!--指定入口类-->

<mainClass>com.yy.Application</mainClass>

</manifest>

<manifestEntries>

<!--MANIFEST.MF 中 Class-Path 加入资源文件目录-->

<Class-Path>./resources/</Class-Path>

</manifestEntries>

</archive>

<outputDirectory>${project.build.directory}</outputDirectory>

</configuration>

</plugin>

 

<!--拷贝依赖 copy-dependencies-->

<!--<plugin>-->

<!--<groupId>org.apache.maven.plugins</groupId>-->

<!--<artifactId>maven-dependency-plugin</artifactId>-->

<!--<executions>-->

<!--<execution>-->

<!--<id>copy-dependencies</id>-->

<!--<phase>package</phase>-->

<!--<goals>-->

<!--<goal>copy-dependencies</goal>-->

<!--</goals>-->

<!--<configuration>-->

<!--<outputDirectory>-->

<!--${project.build.directory}/lib/-->

<!--</outputDirectory>-->

<!--</configuration>-->

<!--</execution>-->

<!--</executions>-->

<!--</plugin>-->

 

<!--拷贝资源文件 copy-resources-->

<plugin>

<artifactId>maven-resources-plugin</artifactId>

<executions>

<execution>

<id>copy-resources</id>

<phase>package</phase>

<goals>

<goal>copy-resources</goal>

</goals>

<configuration>

<resources>

<resource>

<directory>src/main/resources</directory>

</resource>

</resources>

<outputDirectory>${project.build.directory}/resources</outputDirectory>

</configuration>

</execution>

</executions>

</plugin>

 

<!--spring boot repackage,依赖 maven-jar-plugin 打包的jar包 重新打包成 spring boot 的jar包-->

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<configuration>

<!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖-->

<includes>

<include>

<groupId>null</groupId>

<artifactId>null</artifactId>

</include>

</includes>

<layout>ZIP</layout>

<!--使用外部配置文件,jar包里没有资源文件-->

<addResources>true</addResources>

<outputDirectory>${project.build.directory}</outputDirectory>

</configuration>

<executions>

<execution>

<goals>

<goal>repackage</goal>

</goals>

<configuration>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

批处理中实现的就是,

1.判断执行jar的pid,有则干掉

2.解压zip,删除jars(jar运行)目录下几个文件并将解压的文件移入jars目录

3.执行jar包,删除zip,删除备份jar,并将新的jar移入备份目录

source /etc/profile

echo "Restarting Application"

mjar=test-0.0.1-SNAPSHOT.jar

mzip=test-0.0.1-SNAPSHOT.zip

jars=/home/Test/jars/

backup=/home/Test/backup/

pid=`ps -ef | grep $mjar | grep -v grep | awk '{print $2}'`

if [ -n "$pid" ]

then

kill -9 $pid

echo "closed process "$pid

fi

unzip -q $mzip

echo "unzip over"

echo "remove old file"

if [ -f "$mjar" ];then

rm -rf $jars/$mjar

rm -rf $jars/om.log

rm -rf $jars/resources/

echo "move new file"

mv $mjar $jars

mv resources/ $jars

fi

echo "running"

export BUILD_ID=dontKillMe

nohup java -jar $jars/$mjar >$jars/om.log>&1&

sleep 5

echo "copy file"

rm -rf $mzip

rm -rf $backup/$mjar

cp $jars/$mjar $backup

sleep 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值