文章目录

  • 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>

使用步骤:

  1. 先打包,执行 mvn clean package。我们熟知的maven 打包命令,这里对 springboot 项目进行打包 ;

  2. 再上传打包的文件,执行:wagon:upload-single

  3. 执行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 实现远程部署相关推荐

  1. 在WIN7中用maven将spring boot项目远程部署到Linux虚拟机的docker容器

    题目信息量很大,蕴含了以下信息: 1.当前开发环境是WIN7 2.docker容器在Linux虚拟机中 3.在WIN7里将直接将spring boot项目发布到该远程docker 4.发布工具是mav ...

  2. Maven自动FTP远程部署

    参照官网文档: https://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html 1.在pom.xml中加入: ...

  3. maven wagon插件实现自动化部署

    使用maven-wagon插件实现自动化部署 wagon-maven-plugin 在项目开发过程中,经常需要部署代码到开发环境,每天可能有好多次,每次都需要mvn clean install &am ...

  4. Maven插件之wagon-maven-plugin,远程自动化部署

    wagon-maven-plugin插件可以帮助我们scp上传jar包并且远程执行shell命令 1. 配置 <profiles><profile><!-- 开发环境 - ...

  5. 基于maven自动发布-Maven Wagon

    发布方式 手工方式:需要做一系列的工作,上传到服务器,停止服务,删除旧文件,移动文件,启动服务等. 自动方式:一条命令完成以上所有过程 pom.xml <extensions><ex ...

  6. linux中安装maven插件,Maven插件wagon

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 通常情况下,进程开发完成后部署到线上Linux服务器,可能需要经历打包.将包文档传到服务器.SSH连上服务器.敲命令启动 ...

  7. maven wagon ftp ssh

    2019独角兽企业重金招聘Python工程师标准>>> maven wagon ftp ssh 博客分类: 中间件 开发人员要使用内部仓库,只需修改本地工程pom.xml ,在 re ...

  8. AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(二)

    AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(二) AndroidStudio如何打包生成realease版本的arr包 ...

  9. Maven版本管理-Maven Release Plugin插件

    一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...

最新文章

  1. 后处理安装_分享UG后处理出Excel程序单的方法
  2. python下载word文件-python-docx操作word文件(*.docx)
  3. cifar-10 cnn 分类
  4. ubuntu 编辑器中文乱码
  5. mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入
  6. js 下拉底部加载|滑轮滚动到页面底部ajax加载数据的实例
  7. linux咋socket编程,linux中socket编程
  8. 【Linux】快速搭建一个基于Vue的大型单页应用
  9. css 高度塌陷_web前端入门到实战:CSS 负边距的行为表现
  10. SQL Server IDENDITY 的用法
  11. Linux学习笔记7-磁盘管理
  12. Illustrator 教程,如何在 Illustrator 中创建线条?
  13. ep100can程序
  14. 励磁电感公式_ANSYS Maxwell 电感矩阵计算
  15. CDlinux万能无线破解系统iSO中文版 U盘启动版
  16. opencv实训记录(大家来找茬辅助外挂)
  17. EditPlus 使用技巧以及快捷键
  18. 2022爬取微博评论-极简40行代码
  19. 新一代安全运营中心体系
  20. 如何优雅的DIY一个高大上的小台灯

热门文章

  1. 【leetcode】324.摆动排序 II (四种解法,快速排序+3way-partition等,java实现)
  2. windows10 输入法 切换 热键 快捷键 更改 设置
  3. 《我们这样近,我们这样远》
  4. 亚马逊短视频制作需要注意什么?
  5. 仿真服务器性能用途说明,云服务器仿真速度
  6. 基于Django构建在线文本分类预测系统:SVM模型在线预测与部署 基于 Django 3.2 框架
  7. matlab删除三维数组中全零行或列
  8. python邮件模块_python 邮件模块
  9. 基于SOPC的MPEG-4视频播放器
  10. 联想有linux系统下载地址,联想有了自己的Linux操作系统?