maven wagon-maven-plugin 实现远程部署
文章目录
- 1、maven 依赖
- 2、配置
- 2.1、wagon-maven-plugin 的基础配置
- 2.2、将 `wagon:upload-single wagon:sshexec` 合并到 `package` 命令中(优化、可选步骤)
- 2.3、密码 在 maven 的 settings.xml (优化配置)
- 2.3.1、在 settings.xml 中配置密码
- 2.3.2、pom.xml 的配置
- 2.4、 停止、启动服务相关的脚本
- 2.5、与 wagon-maven-plugin 无关,但是项目可能用的配置(可选配置)
开发springboot 项目,每次(测试)部署时,要先打包成 jar 文件,再 SCP 上传的linux 服务器上,用shell 命令停止原有的服务,删除原有的代码,再运行刚刚上传的jar …,这是一系列的重复繁琐操作。而 wagon-maven-plugin
可以简化这些繁琐操作。
1、maven 依赖
<dependency><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version>
</dependency>
2、配置
2.1、wagon-maven-plugin 的基础配置
<build><finalName>assets</finalName><extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>2.10</version></extension></extensions><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version> <configuration> <!-- 需要部署的文件 --><fromFile>target/assets.jar</fromFile><!-- 部署目录 用户:密码@ip+部署地址:端口 --><url><![CDATA[ scp://root:密码@192.168.1.100:28/usr/tomcat_assets/ ]]></url><!--shell 执行脚本 --><commands><!-- 停止服务--><command>sh /usr/tomcat_assets/stop.sh</command><!-- 启动服务 --><command>sh /usr/tomcat_assets/start.sh</command></commands><displayCommandOutputs>true</displayCommandOutputs></configuration></plugin></plugins>
</build>
使用步骤:
先打包,执行
mvn clean package
。我们熟知的maven 打包命令,这里对 springboot 项目进行打包 ;再上传打包的文件,执行:
wagon:upload-single
;执行shell 命令(脚本),主要是停止、删除原来的服务,启动新的服务,执行:
wagon:shexec
。
如果想上传文件、执行shell 命令 一起执行,将两个命令合并到一块,即: mvn wagon:upload-single wagon:sshexec
。(注意: 命令要有先后顺序)
如果想打包、上传文件、执行shell 命令 三者一起执行,则执行: mvn clean package wagon:upload-single wagon:sshexec
。
2.2、将 wagon:upload-single wagon:sshexec
合并到 package
命令中(优化、可选步骤)
如果觉得上面的命令复杂,每次都是 打包、上传文件、执行shell 脚本三者一起执行,可以将 上传文件、执行shell 脚本 合并到 打包命令中,即将 wagon:upload-single wagon:sshexec
合并到 package
命令中,当执行打包命令 package
时,就会执行 上传文件、 执行shell 命令。
<build><finalName>assets</finalName><extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>2.10</version></extension></extensions><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version><executions><execution> <id>upload-deploy</id> <!-- 运行package打包的同时运行upload-single和sshexec --><phase>package</phase><goals><goal>upload-single</goal><goal>sshexec</goal></goals><configuration> <!-- 需要部署的文件 --><fromFile>target/assets.jar</fromFile><!-- 部署目录 用户:密码@ip+部署地址:端口 --><url><![CDATA[ scp://root:密码@192.168.1.100:28/usr/tomcat_assets/ ]]> </url><!--shell 执行脚本 --><commands><!-- 停止服务--><command>sh /usr/tomcat_assets/stop.sh</command><!-- 启动服务 --><command>sh /usr/tomcat_assets/start.sh</command></commands><displayCommandOutputs>true</displayCommandOutputs></configuration></execution></executions></plugin></plugins>
</build>
使用方法: 执行 mvn clean package
即可。
此处的 mvn clean package
相当于执行 mvn clean package wagon:upload-single wagon:sshexec
。
说明:
此步骤仅仅优化打包、上传、 执行shell 命令的执行,不是必须的配置。
2.3、密码 在 maven 的 settings.xml (优化配置)
文件上传会涉及到密码,密码可以放到pom.xml (上面已演示), 也可以放到 maven 的 settings.xml 。
2.3.1、在 settings.xml 中配置密码
<servers><server> <id>assets</id> <username>root</username> <password><![CDATA[密码]]></password> </server>
</servers>
注意: <id>
的值 要保证唯一。
2.3.2、pom.xml 的配置
<configuration>
标签增加 <serverId>
,其值与settings.xml 中 <server>
标签中的 <id>
的值一样。
<configuration><serverId>assets</serverId>
</configuration>
如图所示:
2.4、 停止、启动服务相关的脚本
stop.sh
停止服务的脚本:
#!/bin/bashAPP_NAME='assets.jar'tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ];thenecho 'Stop Process...'kill -9 $tpid
fisleep 1tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`if [ ${tpid} ];thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fi
start.sh
启动脚本:
#!/bin/bashfileDir=/usr/tomcat_assets
fileName=assets.jarnohup /usr/java/jdk1.8.0_201/bin/java -jar ${fileDir}/${fileName} > ${fileDir}/assets.log 2>&1 &echo $?echo 'Start Success! '
2.5、与 wagon-maven-plugin 无关,但是项目可能用的配置(可选配置)
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration>
</plugin>
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 修改相应的SpringBootApplication.java --><mainClass>xxx.yyy.zzz.Application</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions>
</plugin>
maven wagon-maven-plugin 实现远程部署相关推荐
- 在WIN7中用maven将spring boot项目远程部署到Linux虚拟机的docker容器
题目信息量很大,蕴含了以下信息: 1.当前开发环境是WIN7 2.docker容器在Linux虚拟机中 3.在WIN7里将直接将spring boot项目发布到该远程docker 4.发布工具是mav ...
- Maven自动FTP远程部署
参照官网文档: https://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html 1.在pom.xml中加入: ...
- maven wagon插件实现自动化部署
使用maven-wagon插件实现自动化部署 wagon-maven-plugin 在项目开发过程中,经常需要部署代码到开发环境,每天可能有好多次,每次都需要mvn clean install &am ...
- Maven插件之wagon-maven-plugin,远程自动化部署
wagon-maven-plugin插件可以帮助我们scp上传jar包并且远程执行shell命令 1. 配置 <profiles><profile><!-- 开发环境 - ...
- 基于maven自动发布-Maven Wagon
发布方式 手工方式:需要做一系列的工作,上传到服务器,停止服务,删除旧文件,移动文件,启动服务等. 自动方式:一条命令完成以上所有过程 pom.xml <extensions><ex ...
- linux中安装maven插件,Maven插件wagon
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 通常情况下,进程开发完成后部署到线上Linux服务器,可能需要经历打包.将包文档传到服务器.SSH连上服务器.敲命令启动 ...
- maven wagon ftp ssh
2019独角兽企业重金招聘Python工程师标准>>> maven wagon ftp ssh 博客分类: 中间件 开发人员要使用内部仓库,只需修改本地工程pom.xml ,在 re ...
- AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(二)
AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(二) AndroidStudio如何打包生成realease版本的arr包 ...
- Maven版本管理-Maven Release Plugin插件
一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...
最新文章
- 后处理安装_分享UG后处理出Excel程序单的方法
- python下载word文件-python-docx操作word文件(*.docx)
- cifar-10 cnn 分类
- ubuntu 编辑器中文乱码
- mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入
- js 下拉底部加载|滑轮滚动到页面底部ajax加载数据的实例
- linux咋socket编程,linux中socket编程
- 【Linux】快速搭建一个基于Vue的大型单页应用
- css 高度塌陷_web前端入门到实战:CSS 负边距的行为表现
- SQL Server IDENDITY 的用法
- Linux学习笔记7-磁盘管理
- Illustrator 教程,如何在 Illustrator 中创建线条?
- ep100can程序
- 励磁电感公式_ANSYS Maxwell 电感矩阵计算
- CDlinux万能无线破解系统iSO中文版 U盘启动版
- opencv实训记录(大家来找茬辅助外挂)
- EditPlus 使用技巧以及快捷键
- 2022爬取微博评论-极简40行代码
- 新一代安全运营中心体系
- 如何优雅的DIY一个高大上的小台灯
热门文章
- 【leetcode】324.摆动排序 II (四种解法,快速排序+3way-partition等,java实现)
- windows10 输入法 切换 热键 快捷键 更改 设置
- 《我们这样近,我们这样远》
- 亚马逊短视频制作需要注意什么?
- 仿真服务器性能用途说明,云服务器仿真速度
- 基于Django构建在线文本分类预测系统:SVM模型在线预测与部署 基于 Django 3.2 框架
- matlab删除三维数组中全零行或列
- python邮件模块_python 邮件模块
- 基于SOPC的MPEG-4视频播放器
- 联想有linux系统下载地址,联想有了自己的Linux操作系统?