Saltar al contenido

Ensamblado de JAR

Cree, liste y extraiga JAR con elide jar, y compile JAR, JAR de fuentes y de Javadoc y distribuciones de aplicaciones ejecutables en un proyecto de Elide.

En esta página

Elide crea y lee archivos JAR directamente con elide jar, y los compila como artefactos del proyecto.

Crear, listar y extraer

Las opciones de jar van después de --:

elide jar -- --create --file app.jar -C out .                              # create
elide jar -- --list --file app.jar                                         # list
elide jar -- --extract --file app.jar --dir extracted                      # extract
elide jar -- --create --file app.jar --main-class com.example.Main -C out . # executable JAR
elide jar -- -help

Compilar y crear un JAR

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

Artefactos del proyecto

amends "elide:project.pkl"
import "elide:Jvm.pkl" as Jvm

artifacts {
  ["app"] = new Jvm.Jar {
    name = "app"
    options {
      entrypoint = "com.example.Main"
    }
  }
}

elide build escribe en .dev/artifacts/jar/<name>/. El JAR contiene las clases y los recursos de todos los conjuntos de fuentes que no son de pruebas.

Jvm.Jar

PropiedadSignificadoValor predeterminado
nameNombre del archivo; "app" y "app.jar" dan ambos app.jar.la clave del artefacto
sourcesConjuntos de fuentes que se empaquetan; vacío significa todos los que no son de pruebas.ninguno
fromJAR de otros miembros del espacio de trabajo que se desempaquetan en este, cada uno compilado antes: from { project("x") }. Sus manifiestos se descartan; sus dependencias se suman al POM exportado y publicado de este proyecto.ninguno
resourcesArchivos adicionales: rutas o new { from = …; into = … }.ninguno
manifestAtributos adicionales de META-INF/MANIFEST.MF.ninguno
manifestFileArchivo de manifiesto que se usa en lugar de uno generado.—
excludesEntradas que se omiten: un patrón con / * ? [ ] es un glob de ruta; un nombre con puntos es un prefijo de paquete.ninguno
options.entrypointMain-Class.jvm.main
options.compressComprimir las entradas.true
options.defaultManifestPropertiesAñadir los atributos Implementation-*.true
mainNo se lee al empaquetar; use options.entrypoint.—
dependsOnArtefactos que se compilan antes.ninguno
artifacts {
  ["app"] = new Jvm.Jar {
    sources { "main" }
    excludes {
      "com.example.internal"   // a package and its subpackages
      "**/*.proto"             // a path glob
    }
    manifest {
      ["Implementation-Vendor"] = "Example"
    }
    resources {
      "LICENSE.txt"
      new { from = "config"; into = "META-INF/config" }
    }
  }
}

JAR de fuentes y de Javadoc

artifacts {
  ["sources"] = new Jvm.SourceJar {
    classifier = "sources"
    excludes { "**/internal/**" }
  }
  ["javadoc"] = new Jvm.JavadocJar {
    windowTitle = "Example API"
    links { "https://docs.oracle.com/en/java/javase/25/docs/api/" }
    groups {
      ["Core"] { "com.example.core" }
    }
  }
}
Jvm.SourceJarSignificado
sourcesConjuntos de fuentes que se empaquetan; vacío significa todos los que no son de pruebas.
classifierSe inserta antes de la extensión (app-sources.jar).
includes, excludesGlobs de ruta sobre las fuentes.
Jvm.JavadocJarSignificado
sourcesConjuntos de fuentes que se documentan; vacío significa todos los que no son de pruebas.
groupsGrupos de paquetes: título y lista de paquetes.
linksURL de documentación externa.
excludesPatrones que quedan sin documentar.
windowTitle, docTitleTítulos de la ventana y del documento.
generator"auto" (predeterminado): Dokka cuando las fuentes incluyen Kotlin, javadoc en otro caso. "javadoc" o "dokka" elige uno.

Las fuentes que incluyen Kotlin se documentan con Dokka en lugar de javadoc, que cubre también el código Java que las acompaña; generator = "javadoc" documenta solo los archivos Java. Dokka se ejecuta como un proceso JVM aparte. Elide resuelve sus JAR desde Maven la primera vez que se compila un JAR de Javadoc de Kotlin y los guarda en caché en el repositorio Maven local, así que esa primera compilación necesita acceso a la red. En cada compilación, Dokka también descarga las listas de paquetes de sus enlaces al JDK, a la biblioteca estándar y a links; --offline omite esas consultas. Dokka lee sources, links y excludes (un paquete excluido y sus subpaquetes quedan fuera); groups y los títulos solo se aplican a javadoc, y Elide avisa cuando se definen títulos para Dokka.

Distribuciones de aplicaciones ejecutables

Un Jvm.JvmApplication es un árbol ejecutable, como el plugin application de Gradle: los JAR de ejecución en lib/, los scripts de inicio en bin/ y archivos comprimidos opcionales.

artifacts {
  ["dist"] = new Jvm.JvmApplication {
    from { "app" }
    entrypoint = "com.example.Main"
    defaultJvmArgs { "-Xmx512m" }
    contents {
      new { from = "config"; into = "etc" }
    }
    options {
      archives { "zip"; "tar" }
    }
  }
}
PropiedadSignificadoValor predeterminado
fromArtefactos JAR con el código de la aplicación; vacío significa todos los JAR declarados, o un JAR con las clases del proyecto.ninguno
nameNombre del directorio y de los scripts de inicio.la clave del artefacto
entrypointClase principal.jvm.main
defaultJvmArgsOpciones de la JVM en los scripts, después de jvm.flags.ninguno
executableDirDirectorio de los scripts."bin"
contentsArchivos adicionales en la raíz, con la misma forma que los recursos de un conjunto de fuentes.ninguno
options.unixStartScript, options.windowsStartScriptGenerar cada script.true
options.archives"zip" y/o "tar" (gzip).ninguno
dependsOnArtefactos que se compilan antes.ninguno
SalidaRuta
Árbol de instalación.dev/artifacts/install/<name>/
Archivos comprimidos.dev/artifacts/distributions/
  • elide run inicia el árbol instalado con las opciones de la JVM de los scripts.
  • Los scripts también leen JAVA_OPTS y <NAME>_OPTS (sample-app → SAMPLE_APP_OPTS).
  • El script POSIX sigue los enlaces simbólicos a sí mismo; en Windows, ejecute el script directamente o mediante PATH.
  • name, version (al generar archivos comprimidos) y cada into deben ser nombres de archivo válidos en todas las plataformas: sin /, \, :*?"<>|, caracteres de control, punto o espacio al final, ni nombres de dispositivo de Windows como NUL. Los nombres no válidos hacen fallar la compilación antes de que escriba nada.

Los miembros de un espacio de trabajo usan el Jvm.Jar de un proyecto hermano con project("core"); consulte Espacios de trabajo.

¿Te resultó útil esta página?