Перейти к содержанию

8. Исполняемые архивы .jobsar

← Java-доступ и импорты · Оглавление · Далее: практический гайд →

JOBS умеет запускать ZIP-архивы с расширением .jobsar как обычные скрипты. Точка входа архива — src/main.jobs.

Когда использовать .jobsar

Архив удобен, когда нужно распространять не один файл, а небольшой проект:

  • несколько .jobs модулей;
  • Java-классы;
  • сторонние .jar библиотеки;
  • ресурсы;
  • README для пользователя.

Структура проекта

my-tool/
  jars/
  classes/
  resources/
  src/
    main.jobs
  README.md

Назначение директорий:

  • jars/ — Java-библиотеки;
  • classes/.java файлы с классами;
  • resources/ — дополнительные файлы;
  • src/ — модули .jobs;
  • src/main.jobs — точка входа;
  • README.md — описание для человека, интерпретатором не используется.

Команды CLI

Создать новую директорию проекта:

java -jar jobs.jar --new my-project

Инициализировать текущую директорию:

java -jar jobs.jar --init

Собрать архив в target/<имя-текущей-директории>.jobsar:

java -jar jobs.jar --build

Собрать и запустить архив, передав аргументы в src/main.jobs:

java -jar jobs.jar --run --name Alex

Запустить готовый архив:

java -jar jobs.jar target/my-project.jobsar --name Alex

Импорты внутри архива

При запуске .jobsar архив распаковывается во временную директорию. Для кода внутри архива import p"./..." и строковый import "..." сначала ищут файлы от корня распакованного пакета.

Поэтому внутренние файлы импортируются путём от корня пакета:

import p"./src/mod.jobs" as Mod
import p"./classes/Foo.java" as Foo
import "./jars/library.jar"

Если нужно обратиться к файлу вне пакета по относительному пути, используйте выход на уровень выше. Такой путь считается относительно директории, где расположен исходный .jobsar:

import p"../shared.jobs" as Shared

exec внутри архива

Команды exec(...) в пакетном режиме запускаются с рабочей директорией, равной директории исходного архива.

$result = exec( pwd )
print $result.out

Минимальный src/main.jobs

params {
    $name String = "World"
}

println "Hello from jobsar, $name!"

← Java-доступ и импорты · Оглавление · Далее: практический гайд →