您现在的位置是:首页 > 技术文章 > 详情<<文章列表阅读 Maven项目一键打包、上传、重启服务器 maven ssh 一键发布 wjyuian 2018-10-17 3221 0 `Maven+Git`项目在本地开发完成之后,发布到目标服务器的方式有多种。 如果是企业内部的项目,通常是如下的开发发布流程: 1. 工程师本地开发调试通过,提交代码到`Git`仓库。 2. 在集成发布环境的服务器上部署`Git`环境,通过在发布机上执行`获取最新代码`、`编译打包`、`发布包`、`重启目标服务器`的流程来实现一键部署。 3. 常用的集成发布环境有`Jenkins`、`Hudson`。 如果是个人项目,比如本项目,那么我并不想在服务器上部署一个`Git`环境,跟不想再部署一个`Jenkins`。但是我还是想实现一键发布,怎么办?`Maven`插件来帮你。 ### 零、修改Maven的setting.xml配置文件 1. 打开`eclipse`对应的`maven`配置文件`setting.xml`  2. 在`servers`下增加一个`server`配置  --- ### 一、增加maven依赖 1. `pom.xml`的`build`下增加`wagon-ssh`配置: ```xml org.apache.maven.wagon wagon-ssh 2.8 ``` 2. 在`plugins`下增加一个插件配置: ```xml org.codehaus.mojo wagon-maven-plugin 1.0 com.jcraft jsch 0.1.54 org.bouncycastle bcprov-jdk16 1.46 oneblogServer target/ROOT.war scp://47.99.82.106/mnt/ sh /opt/restart_tomcat.sh true ``` --- ### 二、增加maven打包发布命令 1. 在web项目上右键 > Run as > Maven build... 2. 在弹出的窗口上,Goals一栏填入`install package -Pprod wagon:upload-single wagon:sshexec`  3. 执行打包命令即可。 4. 执行结果: ```shell ---打包--- [INFO] --- maven-war-plugin:2.1-alpha-1:war (default-war) @ oneblog-web --- [INFO] Packaging webapp [INFO] Assembling webapp[oneblog-web] in [/Users/wjyuian/projects/oneblog/oneblog-web/target/ROOT] [INFO] Processing war project [INFO] Copy webapp webResources[/Users/wjyuian/projects/oneblog/oneblog-web/conf/prod] to[/Users/wjyuian/projects/oneblog/oneblog-web/target/ROOT] [INFO] Webapp assembled in[97 msecs] [INFO] Building war: /Users/wjyuian/projects/oneblog/oneblog-web/target/ROOT.war ---上传--- [INFO] --- wagon-maven-plugin:1.0:upload-single (default-cli) @ oneblog-web --- [INFO] Uploading: /Users/wjyuian/projects/oneblog/oneblog-web/target/ROOT.war scp://47.99.82.106/mnt//ROOT.war ---执行脚本--- [INFO] --- wagon-maven-plugin:1.0:sshexec (default-cli) @ oneblog-web --- [INFO] sshexec: sh /opt/restart_tomcat.sh 0 1 2 Tomcat started. ---执行成功--- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14.764 s [INFO] Finished at: 2018-10-17T09:10:52+08:00 [INFO] Final Memory: 18M/491M [INFO] ------------------------------------------------------------------------ ``` > 首次执行会提示是否连接目标服务器,直接在`console`栏输入`yes`,回车即可。 > 如果是模块化项目,建议在父目录执行`clean`和`install`之后,再执行该命令。 --- ### 三、其它说明 1. `/opt/restart_tomcat.sh`脚本内容 ```bash pid=`pgrep -f 'file=/opt/tomcat/conf'` times=0 # tomcat根目录 tomcat_path=/opt/tomcat baktime=$(date +%Y%m%d%H%M) # tomcat的停止命令脚本 sudo $tomcat_path/bin/shutdown.sh # 查询tomcat端口,并执行 kill -9 命令 while true do if [ -z $pid ] then echo -e '\n\n\n\n';echo -e "\033[35m tomcat is down \033[0m";echo -e '\n\n\n\n' break else sleep 1 echo $times let times++ fi if [ $times -eq 3 ] then sudo kill -9 $pid;sleep 2 break fi done # 直接删除旧的包,好习惯是备份 rm -rf /home/admin/run/deploy/* # 复制新的包到启动目录 cp /mnt/ROOT.war /home/admin/run/deploy/ # 启动tomcat sudo $tomcat_path/bin/startup.sh ``` 2. [参考文章][srcArticle] [srcArticle]: https://www.jianshu.com/p/15f93a09fe15 相关文章 SpringBoot2从零开始(一)——项目启动 Eclipse相关使用问题记录 Linux之相关工程化应用遇到的问题 从零开发参数同步框架(一)—— 项目起源 开发一个简单的集成编译、打包、服务检测、依赖发布的模块 栏目导航 关于我 不止技术 工程化应用(23) 技术学习/探索(32) 自娱自乐(2) 还有生活 随便写写(1) 娱乐/放松(1) 点击排行 SpringBoot2从零开始(二)——多数据源配置 搜索引擎进阶——IK扩展之动态加载与同义词 从零开发参数同步框架(二)—— 前期准备之工具类 Nginx的nginx.conf配置部分解释 springMVC中controller参数拦截问题处理 Maven项目一键打包、上传、重启服务器 微信小程序深入踩坑总结 微信小程序的搜索高亮、自定义导航条等踩坑记录 标签云 Java(19) 搜索引擎(13) Solr(7) 参数同步(6) SpringBoot(4) ES(3) ElasticSearch(3) JVM(3) Netty(3) Spring(3) mongoDB(3) 设计模式(3) Curator(2) Docker(2) Dubbo(2) 大家推荐 魔神重返战场!厄祭战争的巴巴托斯:第四形态 搜索引擎入门——Solr查询参数详解以及如何使用Java完成对接 来聊一聊这个被淘汰的图片验证码 搜索引擎入门——聊聊schema.xml配置 搜索引擎入门——启动第一个Solr应用 君子性非异也,善假于物也——功能强大的Postman 择其善而从之——我为什么开始学习ElasticSearch 实现一个关于队列的伪需求是一种怎样的体验