什么是Cloud Toolkit
Cloud Toolkit 是免费的本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云 等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。
首先在父工程的pom添加
/Users/kaifa/Documents/lxh/xxx-new/jar是你的jar打包后存放的地址
<properties>
<!--打包配置-->
<copy>true</copy>
<localDir>/Users/kaifa/Documents/lxh/xxx-new/jar</localDir>
</properties>
子模块pom加入 这样就可以把当前子模块 执行package的时候把jar打入到指定目录 如果执行的install请把
<phase>package</phase>
改为
<phase>install</phase>
<!--复制jar包到指定文件目录,连接服务器,复制文件到服务器-->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copy</id><!--需要唯一-->
<phase>package</phase><!--当执行package操作时执行一下任务-->
<configuration>
<tasks><!--任务-->
<echo message="start.................................."/><!--打印-->
<echo message="load maven plugin ant-contrib-1.0b3"/>
<!--加载plugin ant-contrib的配置文件-->
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath><!--加载jar包,${settings.localRepository}的值是你maven settings文件中配置的本地仓库位置-->
<pathelement location="${settings.localRepository}/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<!--复制jar包-->
<if>
<equals arg1="${copy}" arg2="true"/><!--是否复制jar包-->
<then>
<echo message="Copy jar to your desired path."/>
<copy todir="${localDir}" overwrite="true"><!--执行复制操作,todir的值是将要复制jar包到的地方,overwrite是否重写-->
<fileset dir="${project.build.directory}"><!--${project.build.directory}值是你的target目录-->
<include name="*.jar"/><!--target目录下的jar包-->
</fileset>
</copy>
</then>
</if>
<!--打印-->
<echo message="pom type:${project.packaging}"/>
<echo message="target path:${project.build.directory}"/>
<echo message="maven local repository:${settings.localRepository}"/>
<echo message="if pom type equals pom,delete ant generate target and antrun folder"/>
<echo message="${project.build.finalName}"></echo>
<!--
因为 maven-antrun-plugin 执行后,会在你的项目中生成一个target/antrun/build-main.xml,
在packageing=pom的项目下也会生成一个这样的文件和文件目录,个人觉得很烦,索引引入ant-contrib依赖,
如果你觉得不烦,可以不添加ant-contrib依赖,下边的if标签也不能使用.
-->
<!--删除-->
<if><!--if 标签-->
<equals arg1="${project.packaging}" arg2="pom"/> <!--判断当前pom文件的packageing是否是pom类型,-->
<then><!--如果是pom类型则删除 该项目下的target目录-->
<echo message="delete ${project.build.directory}"/>
<delete dir="${project.build.directory}"/>
</then>
</if>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
开始使用Cloud Toolkit打包 在 Intellij IDEA 中部署 Spring Boot / Spring Cloud 应用到阿里云这里使用的是IDEA2019 首先在安装Alibaba Cloud Toolkit插件
安装教程https://yq.aliyun.com/articles/674021?spm=5176.11997469.1283546..7a8f2fa8U2VOhA&aly_as=FgAcVHLg
1、选择Tools -> Alibaba Cloud View -> Host 如图
2、点击add host 填入的服务器名称 用户名 密码 测试一下连接然后点击add
upload是上传文件用的 Termianl是对应你服务器的命令控制台 command 是输入命令的地方
More里面是一些删除当前连接还有编辑等一些操作 如图
3、点击工具栏中的 Edit Confugurations... (小绿锤子旁边)-> 点+号添加Deploy to Host 如图
4、选择一个你的服务器 Target Directory 打包存放的jar地址
After deplay填上你打包后执行的脚本 (脚本在最后面哦)
多模块需要在before launch 添加子模块 clean package操作 如图
多模块打包 https://yq.aliyun.com/articles/676151
5、切换upload file 点browse添加你要上传的jar
6、切换到advanced 填入你打包前执行的脚本(脚本在最后面哦) 点击apply -> ok
7、点击run执行 然后查看日志 等待执行完成 先执行eureka 再执行config 执行启动之后才执行其它服务的命令 如图
before.sh脚本
#!/bin/bash
echo "before打包前执行"
source /etc/profile
ps -ef|grep xxxx-eureka|grep -v "grep"|awk '{print $2}'|xargs kill -9
ps -ef|grep xxxx-config|grep -v "grep"|awk '{print $2}'|xargs kill -9
ps -ef|grep xxxx-gateway|grep -v "grep"|awk '{print $2}'|xargs kill -9
ps -ef|grep xxxx-user|grep -v "grep"|awk '{print $2}'|xargs kill -9
ps -ef|grep xxxx-activity|grep -v "grep"|awk '{print $2}'|xargs kill -9
ps -ef|grep xxxx-search|grep -v "grep"|awk '{print $2}'|xargs kill -9
cd /usr/jarprod
rm -rf xxxx-*
echo "before执行结束"
after.sh脚本
source /etc/profile
nohup java -Xms128m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar /usr/jarprod/xxx-eureka.jar > /dev/null 2>&1 &
RESULT=000
while [[ $RESULT != "200" ]]; do
RESULT=$(curl -I -m 10 -o /dev/null -s -w %{http_code} xxx-new:xxx-new@localhost:8761)
echo eureka $RESULT
sleep 5
done
nohup java -Xms128m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar /usr/jarprod/xxx-config.jar --spring.profiles.active=native > /dev/null 2>&1 &
RESULT2=000
while [[ $RESULT2 != "200" ]]; do
RESULT2=$(curl -I -m 10 -o /dev/null -s -w %{http_code} localhost:8888/actuator/info)
echo config $RESULT2
sleep 5
done
echo gateway
nohup java -Xms128m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar /usr/jarprod/xxx-gateway.jar --spring.profiles.active=test > /dev/null 2>&1 &
echo activity
nohup java -Xms128m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar /usr/jarprod/xxx-activity.jar --spring.profiles.active=test > /dev/null 2>&1 &
echo user
nohup java -Xms128m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar /usr/jarprod/xxx-user.jar --spring.profiles.active=test > /dev/null 2>&1 &
echo search
nohup java -Xms128m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar /usr/jarprod/xxx-search.jar --spring.profiles.active=test > /dev/null 2>&1 &
exit