Elide включает javac для Java 25; отдельный JDK не нужен.
Компиляция исходных файлов
elide javac -- -d out src/Hello.java
elide java -- -cp out HelloПараметры javac указываются после --. Без -d файлы классов записываются рядом с исходниками.
elide javac -- -help выводит все параметры javac.
Параметры Elide
Параметры Elide указываются до --:
| Параметр | Назначение |
|---|---|
--jar PATH | Упаковать результат в JAR по пути PATH. |
--manifest FILE | Манифест для результата --jar. |
--max-errors N | Сколько ошибок показать, прежде чем остальные будут только подсчитаны; 0 показывает все. Предупреждения дедуплицируются и никогда не ограничиваются. |
--report-used-deps PATH | Записать элементы classpath, на которые ссылается результат (strict deps в Bazel). |
--capabilities | Вывести возможности компилятора в формате JSON. |
--persistent_worker | Работать как постоянный воркер Bazel в режиме singleplex или multiplex. |
--classpath-cache | Только в воркере: повторно использовать состояние classpath между компиляциями. ELIDE_ отключает это. |
elide javac --jar target/app.jar -- src/Main.java src/Util.java
elide javac --jar target/app.jar --manifest src/MANIFEST.MF -- src/Main.javaСборка проектов
elide build компилирует src/main/java и src/test/java или наборы исходников, объявленные
в elide.pkl. Чтобы скомпилировать только main:
elide build compile-java-mainjvm {
target = 25
java {
release = 25
compiler {
mode = "embedded"
flags { "-Xlint:all" }
}
}
features {
graalvm = false
}
}| Свойство | Назначение | По умолчанию |
|---|---|---|
jvm.target | Целевая версия байт-кода; уровень --release, если java.release не задан. | "auto" (21) |
jvm.java.release | Уровень --release: компилировать только с API этого JDK. | "auto" |
jvm.java.source | Использовать --source/--target вместо --release; игнорируется, если задан release. | "auto" |
jvm.java.compiler.mode | "embedded" использует javac из Elide; "external" запускает javac из jvm.javaHome. | "embedded" |
jvm.java.compiler.flags | Дополнительные флаги javac; --release, -source или -target здесь заменяют флаги Elide. | нет |
jvm. | Уровень --release только для этого набора исходников. | "auto" (как у проекта) |
jvm. | Флаги javac для этого набора исходников, после compiler.flags. | нет |
jvm.javaHome | Java home для внешней компиляции и отдельных процессов JVM. | собственный у Elide |
jvm.debug | Компилировать с -g. | true |
jvm.features.graalvm | Добавить org.graalvm.nativeimage, word и collections в classpath компиляции. | false |
jvm. | Помещать JAR без дескриптора модуля в module path как автоматические модули. | true |
Набор исходников, которому нужны другие настройки (например, компиляция только с java.base), задаёт их в
sourceSets. Если указать набор исходников, которого нет в проекте, сборка завершится ошибкой.
sources {
["desktopless"] { paths { "src/desktopless/java" } }
}
jvm {
java {
sourceSets {
["desktopless"] {
flags { "--limit-modules"; "java.base" }
}
}
}
}Каждая компиляция записывает свои аргументы в javac.args рядом с результатом. Процессоры аннотаций:
Зависимости Maven.
Постоянные воркеры Bazel
elide javac --persistent_worker и elide kotlinc --persistent_worker держат один компилятор запущенным между
действиями Bazel. Правила, настройка и готовый пример: Bazel.
Примеры
Начните с шаблона:
elide init --template java # Java app with a JUnit test