Files
rsxm-lib/build.cmd
T
SashegDev 3d429b2a86 rsxm-lib: общая библиотека для модов
Загрузчик игры даёт каждому моду свой class loader, поэтому моды не видят
друг друга. Но у всех этих загрузчиков родитель — системный, а значит всё,
что попало в его class path, доступно каждому моду. Агент подмешивает jar'ы
из libs\ именно туда, поэтому библиотека одна на всех, и модам не нужно
вшивать её в себя.

Первый набор:
- json.Json — разборщик и писатель JSON без внешних зависимостей;
- config.Config — настройки мода в config\<mod>.json, битый файл не роняет
  игру, а откатывается на значения по умолчанию с записью в лог;
- config.Home — где лежит модлоадер, чтобы мод не гадал;
- config.Log — логи с именем мода.

build.cmd собирает jar и сразу гоняет тесты библиотеки.
2026-10-17 02:51:13 +03:00

35 lines
1.1 KiB
Batchfile

@echo off
rem Builds rsxm-lib: the jar goes to dist\, the tests run right after.
rem Only a JDK is needed.
setlocal
cd /d "%~dp0"
if not exist "build\classes" mkdir "build\classes"
if not exist "build\testclasses" mkdir "build\testclasses"
if not exist "dist" mkdir "dist"
echo [1/3] compiling...
dir /s /b src\main\java\*.java > build\sources.txt
dir /s /b src\test\java\*.java > build\testsources.txt
javac -encoding UTF-8 --release 8 -nowarn -cp "libs\rsx-api.jar" -d build\classes @build\sources.txt
if errorlevel 1 goto :fail
javac -encoding UTF-8 --release 8 -nowarn -cp "libs\rsx-api.jar;build\classes" -d build\testclasses @build\testsources.txt
if errorlevel 1 goto :fail
echo [2/3] packaging rsxm-lib.jar...
if exist "dist\rsxm-lib.jar" del "dist\rsxm-lib.jar"
jar cf "dist\rsxm-lib.jar" -C build\classes .
echo [3/3] running the library tests...
java -cp "libs\rsx-api.jar;build\classes;build\testclasses" net.rsxm.lib.test.LibTest
if errorlevel 1 goto :fail
echo.
echo Готово: dist\rsxm-lib.jar
exit /b 0
:fail
echo.
echo Сборка не удалась.
exit /b 1