背景
- 本次介绍的插件特别适用于小型单体项目部署,摆脱一切的繁琐部署操作,相对与CI/CD流程配置更加简单快捷。
- 我们每次打包后的项目都特别大,其中主要是依赖的jar包占用了大量的空间,而且每次部署都进行了上传,但每次做修改的只有代码。
- 所以代码和jar包分离是提升部署效率的关键。
1.idea配置
1.安装插件(我这里已经安装好了)
2.toolkit配置
1.安装后重启idea,点击add host添加服务器连接
host填对应部署的服务器公网ip
端口默认22
再填入username和password后点add添加即可。
2.点击idea标签页tools/Alibaba colud/Deploy to Host进入部署脚本页面
添加刚刚添加的服务器。
下是部署脚本
改自己需要部署的端口和部署路径。
before deploy:
项目上传前的清理操作。
rm -rf /home/*;
kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
after deploy:
上传后的部署启动操作
nohup java -jar /home/xxx.ar > nohup.log 2>&1 &
预览:
配置maven打包,跳过测试,提升效率
配置好后我们就可以点击run执行完成部署。
但是因为jar包太大部署的速度还是太慢了,下是提升部署速度的关键,采取下例配置后我的小项目一键部署只需10秒左右,十分方便上线测试,如果没有需求可以忽略。
3.依赖包分离部署(关键)
起始配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
将正常打包的jar包解压
jar -xvf xxx.jar
将BOOT-INF/lib文件夹先上传到服务器上,之后每次部署就不需要再上传依赖jar包了
修改pom.xml,打包不带依赖的jar包,只包含项目代码。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--编译不带jar包-->
<configuration>
<!--指定启动类-->
<mainClass>xx.xx.xx</mainClass>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<!--需要打包的文件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
打包后的项目从几百几十mb变成了几百kb。
修改after deploy:
path后指定你存放的lib绝对路径。
nohup java -Dloader.path=/home/lib -jar /home/xxx.ar > nohup.log 2>&1 &
4.测试
均全自动部署(上传嗖的一下就过去了哦~),接下来就是tea time~