使用maven-wagon插件实现自动化部署

wagon-maven-plugin

在项目开发过程中,经常需要部署代码到开发环境,每天可能有好多次,每次都需要mvn clean install & package,然后上传到服务器。实际上这些繁琐的步骤可以通过一个Maven插件wagon-maven-plugin来自动完成

使用步骤

1.导入依赖

<dependency>       <groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version>
</dependency>  

2.在打包项目pom文件buid中配置

<build><finalName>ka-admin</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version><configuration><!-- 需要部署的文件 : target下生成的包 --><fromFile>target/${pack-name}.jar</fromFile><!-- 服务器中上传包部署目录 --><url>scp://服务器账号:密码@服务器IP/其它路径</url><!-- 服务器执行的命令集合 --><commands><!-- 上传后执行服务器脚本 可以直接写指令,也可以写要运行得脚本路径 --><command>sudo sh /data/deploy/ka-admin/deploy.sh</command></commands><displayCommandOutputs>true</displayCommandOutputs></configuration></plugin></plugins><extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>2.10</version></extension></extensions>
</build>

其中
1.<formFile>为target下的jar包 全路径名称 如 target/ka-admin.jar
2.<url>为包上传路径 格式为 scp://服务器账号:密码@服务器IP/其它路径
3.<commands>为上传完成后需要在服务器执行的指令,可以直接写指令,也可以写在服务器中需要执行的shell脚本。一个<command>为一条指令,可以配置多条依次执行
其它配置固定

执行服务器脚本
示例

# 步骤
# 1、把旧包备份到bak目录
# 2、新包移动到工作区
# 3、杀死进程
# 4、启动服务# 指定启动环境 以 java为例
activeProfile="test"
fileName="ka-admin"
logName="cataline.log"#项目根路径 工作区
basePath="/data/deploy/${fileName}"
#包上传路径
uploadPath="${basePath}/data/upload"
#备份包路径
bakPath="${basePath}/data/bak"baseJar="${basePath}/${fileName}.jar"
uploadJar="${uploadPath}/${fileName}.jar"
bakJar="${bakPath}/${fileName}.jar"# 判断备份路径是否存在,不存在创建目录
if [ ! -d "$uploadPath" ]; thenecho "mkdir ${uploadPath}"mkdir -p "${uploadPath}"
fiif [ -d  "$baseJar" ]; thenmv -f ${baseJar} ${bakJar}
fi# 移动上传包到工作区
if [ -d "$uploadJar" ]; thenmv -f ${uploadJar} ${baseJar}
fi# 查看启动进程
pid=`ps -ef|grep ${fileName}.jar | grep -v grep | awk '{print $2}'`
echo "旧进程id:${pid}"
echo "e"
# 杀死进程
kill -9 $pid# 重启进程
if [ -e "$baseJar" ]; thenecho "开始启动此程序..."source /etc/profile nohup java -jar ${fileName}.jar > ${logName} 2>&1 &tail -f ${logName}pIdNew=`ps -ef|grep ${fileName}.jar | grep -v grep | awk '{print $2}'`echo "${fileName} 启动成功,pil:${pIdNew}..."
elseecho "${fileName}.jar 不存在,请检查..."
fi

执行打包上传命令

mvn clean package wagon:upload-single wagon:sshexec

注意
项目部署后可能会无法启动,我碰到过是找不到主类
解决办法:
在buidl中maven打包插件中加入配置指定主类

<executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.androidserver.server.Main(主类全路径)</mainClass></transformer><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.handlers</resource></transformer><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.schemas</resource></transformer></transformers></configuration></execution>
</executions>

windows复制脚本到linux不能执行,需要修改格式为unix
修改脚本格式命令:

vim xxx.sh
后
:set ff=unix

学习记录,可能会有错误,欢迎指正

maven wagon插件实现自动化部署相关推荐

  1. java 利用 wagon 插件 实现自动化部署

    wagon作用是去除我们部署时繁复的步骤,不用再手动上传jar包或者war包到指定服务器路径下面. 使用方法直接在项目pom中引入wagon-maven-plugin <properties&g ...

  2. maven配置自动部署到服务器上,jenkins+svn+maven安装配置并自动化部署成功(超级详细)...

    jenkins+svn+maven安装配置并自动化部署成功(超级详细) jenkins+svn+maven安装配置并自动化部署成功(超级详细) 简言 写这篇博客的原因是因为每次部署服务器的流程都是在做 ...

  3. Maven插件wagon-maven-plugin自动化部署Java项目到Linux远程服务器

    通常情况下,程序开发完成后部署到线上Linux服务器,可能需要经历打包.将包文件传到服务器.SSH连上服务器.敲命令启动程序等一系列繁琐的步骤.实际上这些步骤都可以通过Maven的一个插件wagon- ...

  4. Maven插件wagon-maven-plugin自动化部署

    Maven的一个插件wagon-maven-plugin来自动完成. 文件上传到服务器 Maven项目可使用mvn package指令打包,打包完成后包位于target目录下,要想在远程服务器上部署, ...

  5. 使用Maven插件wagon-maven-plugin自动化部署

    在项目开发过程中,经常需要部署代码到开发环境,每天可能有好多次,每次都需要mvn clean install,然后上传到服务器.实际上这些繁琐的步骤可以通过一个Maven插件wagon-maven-p ...

  6. jenkins+maven+Tomcat+shell构建自动化部署

    https://yq.aliyun.com/articles/685931 1.官网下载war包: jenkins本质上就是一个web应用,直接下载jenkins的war包通过tomcat运行即可. ...

  7. gitlab+maven+spingboot+jenkin实现自动化部署

    文章目录 1 安装Gitlab-CE 1.1 安装并配置必要的依赖关系 1.2 安装邮件服务 1.3 添加GitLab包存储库 2 基础配置 2.1 打开配置文件 2.2 配置访问地址和端口 2.3 ...

  8. JavaWeb+SVN+Maven+Tomcat +jenkins实现自动化部署

    网址:https://blog.csdn.net/liyong1028826685/article/details/88289218 在日常开发项目中常见的开发模式是使用代码库来存放我们的项目例如:S ...

  9. JENKINS+maven+ssh+shell 完成自动化部署工具的开发

    1打包服务使用maven进行组织 2整个过程使用jenkins作为工作流触发每个动作 3具体每个动作使用shell完成 4jenkins服务器通过和应用服务器添加信任关系,实现免密输入.scp命令推包 ...

最新文章

  1. linux java javac版本_linux下java 和 javac version 不一致问题
  2. c语言程序设计一元二次函数,计算一元二次函数的根,大家看看那里有错了。。。。...
  3. R开发(part11)--基于S4的面向对象编程
  4. [vue] 怎么修改vue打包后生成文件路径?
  5. python下载文件暂停恢复_Python关于Threading暂停恢复解决办法
  6. .NET BackgroundWorker的一般使用方式
  7. stm32的串口DMA空闲中断接收不等长数据,stm32F4的usart2-DMA-IDLE收发
  8. 移植busybox构建最小根文件系统
  9. win10双显卡怎么切换amd和英特尔_win10双显卡怎么切换
  10. pyjion python3.6_Pyjion的代码质量一例 [20160221]
  11. word 单页、多页面旋转
  12. html5闪光效果,HTML5 canvas元素背景梦幻小星星闪烁特效
  13. c 语言输出省份面积和高度,中国省份面积
  14. 鸿蒙 OS 2 升级用户破千万!(1000+企业共建鸿蒙生态)
  15. 【复习必备】高中数学必修四公式汇总, 精华版赶快收藏
  16. java里获取当前月份_Java如何获取当前月份的名称?
  17. 碧蓝航线最新服务器2018,2018最新碧蓝航线建造时间表 舰娘建造时间表一览
  18. 数据集fer2013
  19. 最大团问题(使用递归和非递归两种方法)
  20. 我确实不知道如何使用计算机翻译,新视野大学英语4课后翻译

热门文章

  1. “收到”的英语是Roger that 还是Copy that
  2. 深入浅出 GAN·原理篇文字版(完整)
  3. IdentityServer4 (IDS4) UI界面使用
  4. 套接字编程-TCP网络编程
  5. Arduino寄存器(模拟比较器)
  6. synology群晖存储手机drive上传文件
  7. 计算机内存配置选型,电脑内存条如何选择 电脑内存条选择方法【详细介绍】...
  8. 程序员常用的接单网站
  9. iOS APP转让(从A开发者账号转到B开发者账号)
  10. 东北大学操作系统中文课件知识点第一章