概述

一般情况下,小公司的基础设施不完善,并没有一个功能齐备完善的服务自动化构建发布pass平台,此时就需要我们手动将项目的构建物,如 jar/war 上传到 Linux 服务器,然后再手动启动 start 脚本。

于是产生这样的需求:能否实现将mvn install生成的 jar/war 上传部署到远程 Linux 服务器,并重启服务,实现一定程度的自动化?

wagon-maven-plugin就是能实现这个功能的一款maven插件。

实现

首先,在pom.xml文件的<build>里新增配置:

<extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>3.0.0</version></extension>
</extensions>

<build><plugins>下面新增配置:

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version><configuration><serverId>114.215.175.236</serverId><fromFile>target/${project.artifactId}.jar</fromFile><url>scp://root@114.215.175.236/home/hpba/HPBA/ALM//extractor-alm</url><commands><command>sh /data/apps/arm-webapp/arm-webapp-jar-start.sh</command></commands></configuration>
</plugin>

同时还需要在本地 maven 的 setting.xml 文件里面配置这个 server 的用户名和密码,使得 ssh 可以正常连接到 server:

<server><id>114.215.175.236</id><username>root</username><password>111</password>
</server>

完成上述配置项之后,打开maven面板,发现多了一个wagon plugin:

我们主要关注3项:

  • upload是上传整个文件夹,此时上述配置(仅仅只需要上传一个 jar)不生效
  • 使用upload-single,实现将单个文件scp上传部署到Linux server,默认覆盖原文件。
  • 使用sshexec,即执行 pom.xml 文件里面配置的command:sh /data/apps/arm-webapp/arm-webapp-jar-start.sh,注意使用sh执行脚本,不能使用./aaa.sh方式。否则报错:Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0:sshexec (default-cli) on project arm-webapp: Unable to execute remote command

步骤:

  1. 在 terminal 里输入命令: mvn clean install
  2. 双击 wagon:upload-single,第一次执行时,需要输入yes确认:
    验证是否上传成功,进入到上述配置目录,使用 ll 目录查看 jar 的构建时间戳即可。
  3. 双击 wagon:sshexec,即可实现脚本执行。脚本的功能:杀掉当前服务进程,并重启。
    验证服务是否重启,输入 jps,若 pid 发生变化,则表明服务已重启。

至此,将大部分手动操作实现自动化。

附上:

#!/bin/bashAPP=arm-webapp;
PORT=6100;
DEBUG=false;SH=$(readlink -f "$0")
if [ "$1" = "--debug=false" ]; thenecho $SHsed -i "s/^DEBUG=true;/DEBUG=false;/g" "$SH"echo -e "\033[0;31m debug set false,please rerun \033[0m"exit 0
elif [ "$1" = "--debug=true" ]; thenecho $SHsed -i "s/^DEBUG=false;/DEBUG=true;/g" "$SH"echo -e "\033[0;31m debug set true,please rerun \033[0m"exit 0
fiBIN="$APP.jar"
DEBUG_PORT="3$PORT"
PWD=`pwd`
PID=`ps -eaf |grep java | grep $BIN | awk '{print $2}'`
SHELL_FOLDER=$(dirname $(readlink -f "$0"))
LOG_HOME="$SHELL_FOLDER/logs"
BIN_HOME="$SHELL_FOLDER/bin"if [ -z "$APP" ]; thenecho "no app";exit 1;
fiif [ -n "$PID" ]; thenecho "kill $PID"kill -9 $PID
fiif [ "$DEBUG" = "true" ]; thenecho -e "\033[0;31m debug is open,port=$DEBUG_PORT \033[0m"JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=y"
fiJAVA_HEAP_DUMP_OPTS=-XX:HeapDumpPath=$LOG_HOME/dump.hprof
JAVA_OPTS="$JAVA_OPTS -Dserver.port=$PORT -Dlog.home=$LOG_HOME -Duse.flume=false -Xms128m -Xmx2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=1024m -Dfile.encoding=utf-8 -XX:+HeapDumpOnOutOfMemoryError $JAVA_HEAP_DUMP_OPTS"nohup java $JAVA_OPTS -jar $BIN_HOME/$BIN >$LOG_HOME/console.log 2>&1 &

wagon-maven-plugin插件实现自动化构建部署到服务器相关推荐

  1. 自动化构建部署(CICD)

    项目管理之自动化构建部署(CICD) 理解敏捷项目管理 掌握ones使用 掌握GitLab使用 掌握Jenkins自动化项目构建与部署 1. 研发管理概述 1.1.概念 ​研发管理就是在研发体系结构设 ...

  2. 项目管理之自动化构建部署(CICD)

    项目管理之自动化构建部署(CICD) 1. 研发管理概述 [目标] 理解敏捷项目管理 [路径] 1:了解研发管理概念 2:了解敏捷开发 3:了解DevOps [讲解] 1.1. 研发管理概念 ​ 研发 ...

  3. 云效搭建流水线实现自动化构建部署

    前言 云效,是阿里云提供的一款服务类产品,能够多人协作开发集成.多种编程语言构建打包和分布式集群部署发布等服务.轻松搭建从代码提交.集成.构建到测试环境.预发环境.线上环境部署发布验证的持续交付流水线 ...

  4. Docker安装Jenkins实现自动化构建部署到Tomcat

    安装Docker 直接装一个docker-toolbox就好了,下载最下面的最新版 http://mirrors.aliyun.com/docker-toolbox/windows/docker-to ...

  5. GitHub+Vue自动化构建部署

    GitHub+Vue自动化构建部署 GitHub+Vue自动化构建 懒是第一生产力,写Vue都知道,写完了想在服务器上跑,就得npm run build,然后将生成的dist目录下的文件放到web目录 ...

  6. 【请收藏】自动化构建部署之Travis CI使用(GitHub/Travis CI/Vue)

    文章目录 CI/CD 工具 Travis CI 使用 1. 注册 2. 新建Github仓库 3. 创建vue项目 4. 配置Travis CI 5. 发布到GitHub pages Travis C ...

  7. eclipse maven plugin 插件 安装 和 配置

    本文转自:http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html maven3 安装: 安装 ...

  8. jenkins+github+docker+maven自动化构建部署

    2019独角兽企业重金招聘Python工程师标准>>> 1. jenkins插件的安装 1.1 全局工具配置(jdk1.8 + maven + docker) 点击:系统管理 --& ...

  9. 构建maven项目插件_如何构建一个Maven插件

    构建maven项目插件 使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 今天尝试Okta. 由于其插件生态系统的普 ...

最新文章

  1. 2、Flume1.7.0入门:安装、部署、及flume的案例
  2. Java深度历险(二)——Java类的加载、链接和初始化
  3. 【C/C++】变量做数组长度
  4. 视频直播中用户连麦技术模型与特点分析
  5. js Blob对象介绍
  6. 数学--数论--莫比乌斯反演
  7. 立即更新!SonicWall 公司再次发布SMA 100 0day 固件更新
  8. git cherry-pick合并某个commit
  9. “留得五湖明月在,不愁无处下金钩“太经典,分享一下
  10. 本地nodejs+gulp完成字体转换 ttf转成woff2格式
  11. dubbo异常源码分析处理
  12. html微信气泡插件,微信加上个性化插件工具,瞬间逼格满满
  13. 土壤基因组dna提取试剂盒
  14. Android蓝牙开发之一:打开、关闭蓝牙
  15. 步进电机低频震动问题
  16. 用R求矩阵的特征值和特征向量
  17. 新一代杂志新一代杂志社新一代编辑部2022年第13期目录
  18. 工具推荐:ST-MCU-FINDER(ST意法半导体MCU选型,产品查找工具)
  19. kali翻译插件_Kali优化之安装翻译工具goldendict及使用方法
  20. webservice-CXF3.0

热门文章

  1. 大数据和人工智能未来发展趋势
  2. java编程个人总结_java个人总结
  3. S3C2440系统中断(转)
  4. 《管理评论》投稿经验分享21年
  5. Pthon中的输出函数
  6. discuz mysql cpu 100_Discuz导致MYSQL CPU 占用 100%?
  7. 计算机界面没磁盘驱动器,请将磁盘插入驱动器,电脑提示驱动器中没有磁盘怎么办...
  8. 大数据揭秘区块链人才大迁徙:那个你身边悄悄离职的人去哪儿了?
  9. 人工智能在电力系统中的应用值得思考的问题
  10. 明解C语言入门篇_第10章_指针