Maven 项目自动部署项目脚本(jboss)
2016-06-15 14:02
267 查看
在工作中,使用自动化技术部署项目是非常方便的,尤其是对于持续性迭代开发的项目。此博客仅针对于中小型项目,使用svn进行项目管理,使用maven进行模块儿管理的项目使用。这种项目一般来说,svn会键在一台单独的服务器上,maven私服又会建在 另一台私服上,也有可能建立在同一台服务器上。 针对于这种架构的项目,笔者遇到的也 就两种情况:
1. 自动化打包svn 仓库的代码,此种情况使用于项目上线
2. 自动化打包本地代码, 此种情况适用于非上线的个人测试。
这是最简单的两种方式,通常情况下,开发环境,测试环境和生成环境是一些配置 文件是不一样的,所以通常我们会在打包之前进行修改配置。虽然说目前网上 有很多开源免费的自动化部署工具,如jenkins,但是往往不能满足我们个性化的需求。而且使用起来也并不简单。在 笔者看来,在执行自动化 部署的时候,最简单的方式,莫过于使用批处理文件,直接双击一下运行就ok了。 或许有的人会说,这种方式不灵活,但是,试问一下,为什么一定要写成非常灵活呢? 定制化的才是最适合自己的,才是 最简单的。 所以笔者在 进行项目之间迁移的时候,只需要修改一下脚本中相关的参数即可。笔者只对第二种情况进行演示:
1. Maven 自动打包脚本:package.bat
2. 自动部署脚本:deploy.bat
3. 注意事项:
1. 只能运行在windows 电脑上
2. 本地需要配置maven 环境,这样才能使用mvn命令
3. 目标服务器必须开启了ftp服务
4. 此脚本只能使用于jboss应用服务器,并不适合tomcat , 因为tomcat 会自动解压war包为目录,但是ftp命令并不提供删除非空文件夹的命令
1. 自动化打包svn 仓库的代码,此种情况使用于项目上线
2. 自动化打包本地代码, 此种情况适用于非上线的个人测试。
这是最简单的两种方式,通常情况下,开发环境,测试环境和生成环境是一些配置 文件是不一样的,所以通常我们会在打包之前进行修改配置。虽然说目前网上 有很多开源免费的自动化部署工具,如jenkins,但是往往不能满足我们个性化的需求。而且使用起来也并不简单。在 笔者看来,在执行自动化 部署的时候,最简单的方式,莫过于使用批处理文件,直接双击一下运行就ok了。 或许有的人会说,这种方式不灵活,但是,试问一下,为什么一定要写成非常灵活呢? 定制化的才是最适合自己的,才是 最简单的。 所以笔者在 进行项目之间迁移的时候,只需要修改一下脚本中相关的参数即可。笔者只对第二种情况进行演示:
1. Maven 自动打包脚本:package.bat
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: :: :: Maven 自动打包脚本 :: :: :: :: 1.切换磁盘,进入项目所在目录 :: :: 2.执行install命令,保证本地仓库jar包为最新的代码 :: :: 3.进入Controller所在目录 :: :: 4.如果war包已经存在,则删除 :: :: 5.执行package命令进行打包 :: :: :: :: :: :: @auth:zonggf :: :: @date: 2016.6.15 :: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: 设置变量:项目所在磁盘 ,项目所在目录,项目名称 set disk=D: set projectDir=D:/work set projectName=helloWorld :: 1.切换磁盘 %disk% ::进入项目根目录(主要是包含模块管理的pom),执行install操作,将本地代码打成最新的jar包,上传到本地仓库 cd %projectDir% call mvn clean install -Dmaven.test.skip=true ::如果 target 目录下已经有war包的话,则删除 cd %projectName%/target if exist %projectDir%/%projectName%.war (del %projectDir%/%projectName%.war) ::回到pom.xml 所在目录,执行maven 打包命令 cd .. call mvn package -Dmaven.test.skip=true pause
2. 自动部署脚本:deploy.bat
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: :: :: FTP 自动部署项目脚本(jboss 服务器) :: :: :: :: 1. 步骤: :: :: 1.1 使用ftp连接服务器 :: :: 1.2 重命名之前的war包,做为备份 :: :: 1.3 删除之前的项目的相关部署文件,jboss会有 :: :: 1.4 上传最新的war包,jboss支持热部署 :: :: 2. 注意: :: :: 2.1 服务器必须开启了ftp :: :: 2.2 此脚本只能保证上传成功,不能保证重新部署不报错, :: :: 是否能成功,重新部署,看路径下是由有 xx.deployed 文件 :: :: :: :: @auth:zonggf :: :: @date: 2016.6.15 :: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: rem 1.设置变量 :: 设置变量:项目所在目录, 项目名称 set webModuleDir=D:/work/helloWorld set projectName=helloWorld :: 设置变量:服务器用户名,密码,ip地址, 端口号默认21 set username=root set password=123456 set ip=xxx.xxx.xxx.xxxx set serverDir=/usr/zong/servers/jboss-as-7.1.1.Final/standalone/deployments ::设置变量:当前时间,格式:20160615.095802 for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do ( set t=%%a ) set hour=%time:~0,2% if %hour% geq 10 (set Time=%t:~0,8%.%t:~8,6%) else (set Time=%t:~0,8%.0%t:~9,5%) rem 2. 编写ftp脚本命令 @echo off :: 2.1 将 ftp相关命令写入 temp.txt 文件, > 表示清空再追加, >> 表示直接追加 echo open %ip%>temp.txt echo user %username% %password% >>temp.txt echo cd %serverDir% >>temp.txt :: 2.2 将之前的war包重命名,删除之前部署的相关信息(jboss 会产生falcon-controller.war.isdeploying,falcon-controller.war.deployed, falcon-controller.war.failed 等文件) ::关闭ftp交互提示 echo prompt >>temp.txt echo rename %projectName%.war bk.%projectName%.war.%Time% >>temp.txt echo mdelete %projectName%.war.* >>temp.txt :: 2.3 上传新的war包 echo send %webModuleDir%/target/%projectName%.war >>temp.txt :: 2.4 退出ftp连接 echo bye>>temp.txt rem 3.执行ftp命令 ftp -n -s:temp.txt rem 4. 删除临时命令文件temp.txt del temp.txt pause
3. 注意事项:
1. 只能运行在windows 电脑上
2. 本地需要配置maven 环境,这样才能使用mvn命令
3. 目标服务器必须开启了ftp服务
4. 此脚本只能使用于jboss应用服务器,并不适合tomcat , 因为tomcat 会自动解压war包为目录,但是ftp命令并不提供删除非空文件夹的命令
相关文章推荐
- Andriod中多层fragment相套时onActivityResult()方法不被调用的原因
- nyoj 8 一种排序
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(18)----实例化
- swift PhotoKit学习——swift(学习八)
- jQuery动态加载css文件实现方法
- 微信消息模板php
- 微信支付:商户订单号重复
- 完美封装 tabBar 自定义加号按钮
- AndroidStudio:断点调试和高级调试
- Spring MVC中的HandlerMapping
- 205. Isomorphic Strings [easy] (Python)
- windows下编译ffmpeg
- pm2 设置开机启动
- linux lua (1) 安装
- CI 定义全局静态变量
- java UT,IT覆盖率报告
- 【Android】【完善】MarqueeView垂直跑马灯解析和完善
- APP启动白屏问题
- STM32单片机IO中断实现步骤
- ACdream 1412 2-3 Trees 递推