tutorial starter proyectos paso español ejemplo crear con capa aplicaciones aplicacion java maven spring-boot executable-jar spring-boot-maven-plugin

java - starter - spring boot tutorial español



SpringBoot jar completamente ejecutable sin dependencias dentro (1)

Es posible que desee considerar utilizar Spring Boot Thin Launcher . Crea un archivo jar con su código de aplicación pero ninguna de sus dependencias. Agrega un lanzador especial delgado que sabe cómo resolver las dependencias de su aplicación desde un repositorio remoto de Maven o desde un caché local cuando se ejecuta el jar. A juzgar por la descripción de lo que quiere hacer, utilizaría la opción de caché local.

La configuración del complemento Maven de Spring Boot para producir un archivo jar totalmente ejecutable que utiliza el iniciador delgado se ve así:

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot.experimental</groupId> <artifactId>spring-boot-thin-layout</artifactId> <version>1.0.3.RELEASE</version> </dependency> </dependencies> <configuration> <executable>true</executable> </configuration> </plugin> </plugins> </build>

NOTA: antes de marcar esta pregunta como duplicado, asegúrese de conocer la diferencia entre JAR ejecutable y JAR de SpringBoot totalmente ejecutable .

La documentación oficial de Spring Boot describe cómo crear JAR completamente ejecutable. A continuación, el archivo JAR generado se puede vincular desde /etc/init.d/ y started / stopped / restarted / statused como un servicio normal de Unix sin scripts o herramientas adicionales como JSVC.

Pero el JAR generado contiene todas las bibliotecas y puede ser lo suficientemente grande en tamaño (en mi caso 70Mb +).

Quiero generar un JAR completamente ejecutable sin bibliotecas, pero luego poder ejecutarlo como servicio SystemV en Linux y vincular bibliotecas externas (JAR) de alguna manera.

ACTUALIZAR

Quiero reducir el tamaño del artefacto para acelerar el despliegue-> test-> fix cycle. A veces estoy trabajando a través de una red móvil y el tamaño de un archivo grande puede disminuir la velocidad de mi trabajo de manera espectacular.

En caso de que no haya una propiedad de configuración simple o un perfil o una opción de línea de comando, usaría un tipo de truco.

Al principio, puedo generar una compilación que contenga todas las dependencias. Luego puedo descomprimirlo y mover todas las bibliotecas a una carpeta especial.

Luego, tengo que volver a empacarlo como completamente ejecutable y ejecutarlo apuntando a la carpeta con bibliotecas.

No creo que esto se pueda hacer con la utilidad jar porque file utilidad de file reconoce el archivo jar totalmente ejecutable como data

$ file fully-executable.jar file fully-executable: data

a diferencia del vaso habitual

$ file usual.jar usual.jar: Java Jar file data (zip)