svn打tag、Maven+SVN自动打包脚本-windows版

5 篇文章 0 订阅
5 篇文章 0 订阅

完整版,好用

1.svn打tag脚本

@echo off
echo [INFO] Tag project.

rem SVN打标签Linux批处理脚本

rem 项目所在路径:(例:"http://127.0.0.1/svn/branches/01 Project_Branches/2019.myproject/myproject")
set project_url="%1"
rem Tag路径:(例:"https://127.0.0.1/svn/tags/2020/Deployment/myproject")
set tag_path="%2"

rem 由于可能从脚本package_tag_project.bat赋值,为避免空格错误所做的处理,去掉前后的双引号、单引号
if not "%project_url%" == "" (set project_url=%project_url:"=%)
if not "%project_url%" == "" (set project_url=%project_url:'=%)
if not "%tag_path%" == "" (set tag_path=%tag_path:"=%)
if not "%tag_path%" == "" (set tag_path=%tag_path:'=%)

rem 设置一个从外部读取的变量
if "%project_url%" == "" ( echo [INFO] Please input the project url: &set /p project_url=)
if "%tag_path%" == "" ( echo [INFO] Please input the tag path &set /p tag_path=)

if "%project_url%" == "" (echo [WARN] project_url not exsit! &goto :paramsError)
if "%tag_path%" == "" (echo [WARN] tag_path not exsit! &goto :paramsError)

rem 去掉字符串最后一个斜杠(如果最后一个字符是斜杠)
if "%project_url:~-1%"=="/" (set project_url=%project_url:~0,-1%)
echo [INFO] project_url: %project_url%

if "%tag_path:~-1%"=="/" (set tag_path=%tag_path:~0,-1%)
echo [INFO] tag_path: %tag_path%

rem 项目名
for %%i in ("%project_url:/=","%") do set "project_name=%%~i"
echo [INFO] project_name: %project_name%

if "%project_name%" == "" (echo [WARN] project_name failed to get! &goto :paramsError)

rem Last Changed Rev: 指定path最后一次更改的revision号
for /f "delims=" %%i in ('svn info -r HEAD "%project_url%" ^| findstr "Last\ Changed\ Rev:"') do set svnRev=%%i
set version=%svnRev:~18%
echo [INFO] SVN Revision:%version%.

if "%version%" == "" (echo [WARN] SVN version failed to get! &goto :paramsError)

rem 获取当前时间
set dateTime=%date:~0,4%%date:~5,2%%date:~8,2%
rem tag项目名 
set tag_project_name=%project_name%-r%version%b%dateTime%
echo [INFO] Tag project name:%tag_project_name%.


rem 强制删除文件夹"项目名_r版本号b当前日期"
echo [INFO] Delete the dir:%tag_path%/%tag_project_name%.
svn rm %tag_path%/%tag_project_name% -m "delete tags %tag_project_name%"

rem 拷贝项目,项目名:"项目名_r版本号b当前日期"
echo [INFO] Begin tag project...
svn cp "%project_url%" "%tag_path%/%tag_project_name%" -m "somedir tags %tag_project_name%" --username wangyaru
if %errorlevel% NEQ 0 (
	echo [INFO] Tag project Failed.
    pause
) else (
	echo [INFO] Tag project succeed.Tag url:"%tag_path%/%tag_project_name%"
	goto okEnd
)

:paramsError
pause

:okEnd

2.导出svn代码、加入svn版本号打包项目

@echo off
echo [INFO] Package tag project.

rem chcp 65001用于解决pom.xml中中文字符乱码问题
rem chcp 65001

rem rem 修改jdk版本
rem set JAVA_HOME=D:\tools\Java\jdk1.7.0_67
rem set PATH=%JAVA_HOME%/bin;%PATH%
rem java -version

rem Tag project路径:(例:"https://127.0.0.1/svn/tags/2020/Deployment/myproject/myproject-r11111b20200612")
set tag_project_url=%1
rem 项目导出位置,默认为当前目录
set workspace=%~dp0

if "%tag_project_url%" == "" ( echo [INFO] Please input the tag project path: &set /p tag_project_url=)
if "%tag_project_url%" == "" (echo [WARN] tag_project_url does not exsit! &goto :paramsError)

echo [INFO] tag_project_url: %tag_project_url%
echo [INFO] the workspace that the project export: %workspace%

rem 去掉字符串最后一个斜杠(如果最后一个字符是斜杠)
if "%tag_project_url:~-1%"=="/" (set tag_project_url=%tag_project_url:~0,-1%)
echo [INFO] tag_project_url: %tag_project_url%

rem svn版本号(截取掉r之前的所有,b之后的所有(b之后是YYYYMMDD,所以截取掉后9位)set "version=%tag_project_url:*-r=%"
set version=%version:~0,-9%
echo [INFO] SVN version:%version%
if "%version%" == "" (echo [WARN] SVN version failed to get! &goto :paramsError)

rem 项目名
for %%i in ("%tag_project_url:/=","%") do set "tag_project_name=%%~i"
if "%tag_project_name%" == "" (echo [WARN] tag_project_name failed to get! &goto :paramsError)

rem 删除目录${tag_project_name}
echo [INFO] Delete the dir "%workspace%%tag_project_name%" if exsits.
rd/s/q "%workspace%/%tag_project_name%"

rem 创建项目目录
echo [INFO] Make the dir:%workspace%%tag_project_name%
md %workspace%%tag_project_name%

cd %workspace%%tag_project_name%

rem 检出项目
echo [INFO] Begin export source project from svn server.Please wait......
svn checkout -q --force %tag_project_url% %workspace%%tag_project_name%
echo [INFO] Finished export source project from svn server.


rem 替换pom.xml文件中的${buildNumber}为version
setlocal disabledelayedexpansion
for /f "tokens=*" %%i in (pom.xml) do (
	if "%%i"=="" (echo.) else (
		set line=%%i
		setlocal enabledelayedexpansion
		ECHO !line:${buildNumber}=%version%!
		endlocal)
)>>pom.tmp
endlocal

if exist pom.bak (del pom.bak)
ren pom.xml pom.bak
ren pom.tmp pom.xml

rem 清除目标文件夹、编译、打包
call mvn clean package

:paramsError
pause

rem 重新打开当前目录
cd %workspace%


rem 将windows改成默认的编码格式
rem chcp 936

3.合并执行1和2

@echo off

rem 项目所在路径:(例:"hhttp://127.0.0.1/svn/branches/01 Project_Branches/2019.myproject/myproject")
set project_url=%1
rem Tag路径:(例:"https://127.0.0.1/svn/tags/2020/Deployment/myproject")
set tag_path=%2

rem 执行打tag脚本
call %~dp0tag_project.bat '%project_url%' %tag_path%
set tag_project_name=%tag_project_name%
set tag_path=%tag_path%

rem 执行打包脚本
call %~dp0package_project.bat %tag_path%/%tag_project_name%

4.执行

1.tag_project.bat
功能:将project以最新版本打tag
参数:(1)svn project url (2)导出的tag路径
执行:方法1:tag_project.bat “http://127.0.0.1/svn/branches/01 Project_Branches/2019.myproject/myproject” “https://127.0.0.1/svn/tags/2020/Deployment/myproject”
方法2:直接执行tag_project.bat,根据提示传入这2个参数
注意:(1)由于第一个参数有空格,所以第一个参数必须使用“”。

2.package_project.bat
功能:打包project。执行过程:设置打包路径,项目导出,加入版本号,打包。
参数:(1)打包的tag project url
执行:方法1:package_project.bat https://127.0.0.1/svn/tags/2020/Deployment/myproject/myproject-r11111b20200612
方法2:执行package_project.bat,根据提示传入参数

3.package_tag_project.bat
功能:合并执行1和2
参数:同1
执行:方法1:package_tag_project.bat “http://127.0.0.1/svn/branches/01 Project_Branches/2019.myproject/myproject” “https://127.0.0.1/svn/tags/2020/Deployment/myproject”
方法2:执行package_tag_project.bat,根据提示传入这2个参数

附:pom.xml里svn打版本号相应代码 及 linux版脚本见https://blog.csdn.net/zltAlma/article/details/106997551

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值