Elide incluye javac para Java 25; no necesita un JDK aparte.
Compilar archivos fuente
elide javac -- -d out src/Hello.java
elide java -- -cp out HelloLas opciones de javac van después de --. Sin -d, los archivos de clase quedan junto a sus fuentes.
elide javac -- -help lista todas las opciones de javac.
Opciones de Elide
Las opciones de Elide van antes de --:
| Opción | Propósito |
|---|---|
--jar PATH | Empaquetar la salida en un JAR en PATH. |
--manifest FILE | Manifiesto para la salida de --jar. |
--max-errors N | Errores que se muestran antes de contar el resto; 0 los muestra todos. Las advertencias se deduplican y nunca se limitan. |
--report-used-deps PATH | Escribir las entradas del classpath a las que hace referencia la salida (strict deps de Bazel). |
--capabilities | Imprimir las capacidades del compilador en JSON. |
--persistent_worker | Ejecutarse como worker persistente de Bazel, en modo singleplex o multiplex. |
--classpath-cache | Solo en modo worker: reutilizar el estado del classpath entre compilaciones. ELIDE_ lo desactiva. |
elide javac --jar target/app.jar -- src/Main.java src/Util.java
elide javac --jar target/app.jar --manifest src/MANIFEST.MF -- src/Main.javaCompilar proyectos
elide build compila src/main/java y src/test/java, o los conjuntos de fuentes que declara
elide.pkl. Para compilar solo main:
elide build compile-java-mainjvm {
target = 25
java {
release = 25
compiler {
mode = "embedded"
flags { "-Xlint:all" }
}
}
features {
graalvm = false
}
}| Propiedad | Significado | Valor predeterminado |
|---|---|---|
jvm.target | Versión de bytecode de destino; el nivel de --release cuando java.release no está definido. | "auto" (21) |
jvm.java.release | Nivel de --release: compilar solo contra la API de ese JDK. | "auto" |
jvm.java.source | Usar --source/--target en lugar de --release; se ignora si release está definido. | "auto" |
jvm.java.compiler.mode | "embedded" usa el javac de Elide; "external" ejecuta el de jvm.javaHome. | "embedded" |
jvm.java.compiler.flags | Opciones adicionales de javac; --release, -source o -target aquí sustituyen a las de Elide. | ninguno |
jvm. | Nivel de --release solo para ese conjunto de fuentes. | "auto" (el del proyecto) |
jvm. | Opciones de javac para ese conjunto de fuentes, después de compiler.flags. | ninguno |
jvm.javaHome | Directorio de Java para compilaciones externas y JVM bifurcadas. | el de Elide |
jvm.debug | Compilar con -g. | true |
jvm.features.graalvm | Añadir org.graalvm.nativeimage, word y collections al classpath de compilación. | false |
jvm. | Poner los JAR sin descriptor de módulo en el module path como módulos automáticos. | true |
Un conjunto de fuentes que necesita una configuración distinta, como uno compilado solo contra java.base, la indica
en sourceSets. Nombrar un conjunto de fuentes que el proyecto no tiene hace fallar la compilación.
sources {
["desktopless"] { paths { "src/desktopless/java" } }
}
jvm {
java {
sourceSets {
["desktopless"] {
flags { "--limit-modules"; "java.base" }
}
}
}
}Cada compilación escribe sus argumentos en javac.args, junto a su salida. Procesadores de anotaciones:
Dependencias Maven.
Workers persistentes de Bazel
elide javac --persistent_worker y elide kotlinc --persistent_worker mantienen un compilador activo entre acciones de
Bazel. Reglas, configuración y un ejemplo completo: Bazel.
Ejemplos
Empiece desde una plantilla:
elide init --template java # Java app with a JUnit test