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 (persistent worker) у режимі 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