# Сборка и деплой SPP-сервера одной командой (Windows). # powershell -ExecutionPolicy Bypass -File build.ps1 # ant jar + деплой в server\ + restart game # powershell -ExecutionPolicy Bypass -File build.ps1 -NoRestart # только собрать и разложить файлы # powershell -ExecutionPolicy Bypass -File build.ps1 -DeployOnly # без сборки: только данные/конфиги/скрипты # Нужны JDK 25 (JAVA_HOME) и Apache Ant в PATH. param( [switch]$NoRestart, [switch]$DeployOnly ) $ErrorActionPreference = "Stop" $Base = $PSScriptRoot $Src = Join-Path $Base "src_mobius\mobius\L2J_Mobius_CT_0_Interlude" $Build = Join-Path $Base "src_mobius\mobius\build\dist\libs" $Server = Join-Path $Base "server" $Compose = Join-Path $Server "docker\docker-compose.yml" if (-not $DeployOnly) { Push-Location $Src try { Write-Host "ant jar..." -ForegroundColor Cyan ant -q jar if ($LASTEXITCODE -ne 0) { throw "ant failed" } } finally { Pop-Location } Copy-Item (Join-Path $Build "GameServer.jar") (Join-Path $Server "libs\GameServer.jar") -Force Copy-Item (Join-Path $Build "LoginServer.jar") (Join-Path $Server "libs\LoginServer.jar") -Force Write-Host "jar -> server\libs" -ForegroundColor Green } # Оверлей датапака: данные ботов, конфиги, чат-хендлеры, SQL-сиды. libs не копируем (это зависимости сборки). $Dist = Join-Path $Src "dist" Get-ChildItem -Path $Dist -Recurse -File | Where-Object { $_.FullName -notlike "*\dist\libs\*" } | ForEach-Object { $rel = $_.FullName.Substring($Dist.Length + 1) $dst = Join-Path $Server $rel New-Item -ItemType Directory -Force -Path (Split-Path $dst) | Out-Null Copy-Item $_.FullName $dst -Force } Write-Host "оверлей -> server\ (data, config, scripts, sql)" -ForegroundColor Green if (-not $NoRestart) { if (Test-Path $Compose) { docker compose -f $Compose restart game Write-Host "game перезапущен. Лог: docker compose -f server\docker\docker-compose.yml logs -f game" -ForegroundColor Green } else { Write-Host "docker-compose не найден, перезапусти сервер вручную." -ForegroundColor Yellow } }