es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Incluir archivo del directorio de construcción dentro del archivo JAR.

Quiero incluir un archivo desde mi carpeta build/resources dentro del jar que estoy creando.

Tengo una estructura de directorios como esta:


proyecto/
├─ build/
│ ├─ resources/
│ │ ├─ config.txt
├─ src/...
├─ build.gradle

Y construyo el jar usando esta tarea de Gradle:


tarea fatJar(type: Jar) {
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}

¿Cómo puedo incluir mi archivo de configuración dentro del jar manteniendo también los contenidos actuales del “fat” (grande)?

Creo que mover la configuración de build/resources a main/resources funcionaría, pero si hay soluciones alternativas, estoy abierto a ellas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para incluir un archivo desde la carpeta build/resources dentro del jar que se está creando, puedes modificar la tarea fatJar en build.gradle de la siguiente manera:

    task fatJar(type: Jar) {
      from sourceSets.main.output
      from { configurations.compileClasspath.filter { it.exists() }.collect { it.isDirectory() ? it : zipTree(it) } }
      with jar
      include 'config.txt'
    }
    

    Esta tarea modificada realiza lo siguiente:

    1. Agrega el contenido del directorio /build/classes/main (que incluye archivos .class compilados) al jar.
    2. Agrega todas las dependencias (JARs) al jar.
    3. Incluye explícitamente el archivo config.txt en el jar.

    De esta manera, puedes mantener el contenido “grande” actual al mismo tiempo que se incluye el archivo config.txt dentro del jar.

    Nota: si mueves el archivo config.txt a src/main/resources, Gradle lo incluirá automáticamente en el jar.

Comments are closed.