什么是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  如图

SpringCloud 创建多模块 springcloud多模块打包_jar

 

2、点击add host 填入的服务器名称 用户名 密码 测试一下连接然后点击add

upload是上传文件用的  Termianl是对应你服务器的命令控制台 command 是输入命令的地方

More里面是一些删除当前连接还有编辑等一些操作 如图

 

SpringCloud 创建多模块 springcloud多模块打包_jar_02

SpringCloud 创建多模块 springcloud多模块打包_Cloud_03

 

3、点击工具栏中的 Edit Confugurations... (小绿锤子旁边)-> 点+号添加Deploy to Host   如图

SpringCloud 创建多模块 springcloud多模块打包_Cloud_04

SpringCloud 创建多模块 springcloud多模块打包_SpringCloud 创建多模块_05

 

 

4、选择一个你的服务器  Target Directory 打包存放的jar地址

After deplay填上你打包后执行的脚本 (脚本在最后面哦)

多模块需要在before launch 添加子模块 clean package操作 如图

SpringCloud 创建多模块 springcloud多模块打包_jar_06

多模块打包 https://yq.aliyun.com/articles/676151

 

 5、切换upload file 点browse添加你要上传的jar

SpringCloud 创建多模块 springcloud多模块打包_Cloud_07

 

6、切换到advanced 填入你打包前执行的脚本(脚本在最后面哦) 点击apply -> ok

SpringCloud 创建多模块 springcloud多模块打包_jar包_08

 

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