您的位置:首页 > 其它

Maven 项目自动部署项目脚本(jboss)

2016-06-15 14:02 267 查看
    在工作中,使用自动化技术部署项目是非常方便的,尤其是对于持续性迭代开发的项目。此博客仅针对于中小型项目,使用svn进行项目管理,使用maven进行模块儿管理的项目使用。这种项目一般来说,svn会键在一台单独的服务器上,maven私服又会建在 另一台私服上,也有可能建立在同一台服务器上。 针对于这种架构的项目,笔者遇到的也 就两种情况:

    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命令并不提供删除非空文件夹的命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: