SVN๊ณผ Maven์ ์ด์ฉํ ์๋ํ ๋น๋ ๋ฐฐ์น ์คํฌ๋ฆฝํธ
@echo off
setlocal enabledelayedexpansion
:: UTF-8 ์ธ์ฝ๋ฉ ์ค์
chcp 65001
:: ์์
๋๋ ํ ๋ฆฌ๋ฅผ ํ๋ก์ ํธ ํด๋๋ก ๋ณ๊ฒฝ
cd /d D:\Projects\MyProject
:: ๋ก๊ทธ ํ์ผ ๊ฒฝ๋ก ์ค์
set LOGFILE=%USERPROFILE%\Desktop\myproject_build.log
:: ๋ก๊ทธ ํ์ผ์ ํ์ฌ ๋ ์ง ๋ฐ ์๊ฐ ๊ธฐ๋ก
echo.>> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"
echo %date% %time% >> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"
:: SVN ์
๋ฐ์ดํธ ์คํ ๋ฐ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก
echo Running SVN update... >> "%LOGFILE%"
svn update >> "%LOGFILE%" 2>&1
:: Maven ๋น๋ ์คํ ๋ฐ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก (ํ
์คํธ ์๋ต)
echo Running Maven build... >> "%LOGFILE%"
mvn clean package -DskipTests -Dfile.encoding=UTF-8 -e -fae >> "%LOGFILE%" 2>&1
:: ๋น๋ ์ฑ๊ณต ์ฌ๋ถ ํ์ธ ํ ์ด๋ฒคํธ ๋ก๊ทธ์ ๊ธฐ๋ก
if %ERRORLEVEL% equ 0 (
echo Build completed successfully. >> "%LOGFILE%"
powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 100 -EntryType Information -Message 'Build completed successfully.'" >> "%LOGFILE%" 2>&1
) else (
echo Build failed. >> "%LOGFILE%"
powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 101 -EntryType Error -Message 'Build failed.'" >> "%LOGFILE%" 2>&1
)
echo Build process finished. >> "%LOGFILE%"
๋ถ์
@echo off
๋ฐฐ์น ํ์ผ ์คํ ์ ๋ช ๋ น์ด๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ์ง ์๋๋ก ์ค์
setlocal enabledelayedexpansion
๋ณ์ ๊ฐ์ ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๋๋ก ์ง์ฐ๋ ํ์ฅ์ ํ์ฑํ
chcp 65001
UTF-8 ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ ํ์ผ์ด๋ ์ฝ์์์ ํ๊ธ์ด ๊นจ์ง์ง ์๋๋ก ์ค์
cd /d D:\Projects\MyProject
์์ ๋๋ ํ ๋ฆฌ๋ฅผ D:\Projects\MyProject๋ก ๋ณ๊ฒฝ
set LOGFILE=%USERPROFILE%\Desktop\myproject_build.log
๋ก๊ทธ ํ์ผ์ ์ฌ์ฉ์ ๋ฐํํ๋ฉด์ ์์ฑํ๋๋ก ์ค์
echo.>> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"
echo %date% %time% >> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"
๋น๋ ๋ก๊ทธ์ ๊ฐ๋์ฑ์ ๋์ด๊ธฐ ์ํด ํค๋ ์ถ๊ฐ
=========================
2025-03-28 12:34:56.78
=========================
์ด๋ฐ ์์ผ๋ก ์ถ๊ฐ๋๋ค.
svn update >> "%LOGFILE%" 2>&1
SVN ์ ์ฅ์์์ ์ต์ ์ฝ๋ ์ ๋ฐ์ดํธํ๊ณ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก
2>&1 : ํ์ค ์๋ฌ ์ถ๋ ฅ(2๋ฒ)์ ํ์ค ์ถ๋ ฅ(1๋ฒ)์ผ๋ก ํฉ์น๋ค๋ ๋ฏ
mvn clean package -DskipTests -Dfile.encoding=UTF-8 -e -fae >> "%LOGFILE%" 2>&1
Maven์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ฉฐ, ํ ์คํธ๋ ์๋ต (-DskipTests)
ํ ์คํธ ์๋ต : ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ ค์ ๋น๋๋ง ํ๊ธฐ๋ ํ๊ณ , ๋ค๋ฅธ ๊ณณ์์ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์๋ค๋ฉด ๊ตณ์ด ํ์ ์๋ค๊ณ ํ๋จํ์ฌ ์ถ๊ฐ๋์ด์๋ ๊ฒ.
-e : ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ์์ธํ ๋ก๊ทธ ์ถ๋ ฅ
-fae : ์๋ฌ ๋ฐ์ ์์๋ ๊ฐ๋ฅํ ํ ๊ณ์ ์งํ
if %ERRORLEVEL% equ 0 (...) else (...)
%ERRORLEVEL% ๊ฐ์ด 0์ด๋ฉด ๋น๋ ์ฑ๊ณต, 0์ด ์๋๋ฉด ์คํจ๋ก ํ๋จ.
๋ง์ง๋ง ๋ช ๋ น์ด๋ 'mvn clean package'์ธ๋ฐ ์ฑ๊ณตํ๋ฉด 0, ์คํจํ๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐํ๋จ.
1 : ์ผ๋ฐ์ ์ธ ์ค๋ฅ(์: ํ์ผ ์์, ์คํ ์คํจ)
2 : ์๋ชป๋ ๋ช ๋ น์ด ์ธ์
100 : Maven ๋น๋ ์คํจ (์ผ๋ฐ์ ์ผ๋ก 100)
101 : ํน์ ํ ์ค๋ฅ ์ํฉ(์: ๋คํธ์ํฌ ์ค๋ฅ)
powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 100 -EntryType Information -Message 'Build completed successfully.'" >> "%LOGFILE%" 2>&1
์ฑ๊ณต ์ : ์๋์ฐ ์ด๋ฒคํธ ๋ก๊ทธ(Application ๋ก๊ทธ)์ ๋น๋ ์ฑ๊ณต ๊ธฐ๋ก
powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 101 -EntryType Error -Message 'Build failed.'" >> "%LOGFILE%" 2>&1
์คํจ ์ : ์ด๋ฒคํธ ๋ก๊ทธ์ ๋น๋ ์คํจ ๋ฉ์์ง ๊ธฐ๋ก
echo Build process finished. >> "%LOGFILE%"
์ ์ฒด ๋น๋ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋์์์ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก
enabledelayedxpansion ์ฌ์ฉํ๋ ์ด์
setlocal enabledelayedexpansion
๋ฐฐ์น ํ์ผ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ์(%๋ณ์๋ช %)์ ํ ๋ฒ ๊ฐ์ด ์ค์ ๋๋ฉด ๊ทธ ์ค์ด ์คํ๋ ๋๊น์ง๋ง ์ ์ง๋จ.
ํ์ง๋ง ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด !๋ณ์๋ช ! ํ์์ผ๋ก ๋ณ์๋ฅผ ์ค์๊ฐ ์ ๋ฐ์ดํธ ๊ฐ๋ฅ
๊ธฐ๋ณธ์ ์ธ ๋ณ์ ์ฌ์ฉ
@echo off
set count=0
for /L %%i in (1,1,5) do (
set /a count+=1
echo count = %count% :: ์ฌ๊ธฐ์ ํญ์ 0์ผ๋ก ์ถ๋ ฅ๋จ
)
๊ฒฐ๊ณผ
count = 0
count = 0
count = 0
count = 0
count = 0
!๋ณ์!๋ฅผ ์ฌ์ฉํ ์ค์๊ฐ ์ ๋ฐ์ดํธ
@echo off
setlocal enabledelayedexpansion
set count=0
for /L %%i in (1,1,5) do (
set /a count+=1
echo count = !count! :: 1๋ถํฐ 5๊น์ง ์ฆ๊ฐํ๋ฉฐ ์ถ๋ ฅ๋จ
)
๊ฒฐ๊ณผ
count = 1
count = 2
count = 3
count = 4
count = 5