¿Qué es un JAR gordo?

Escuché a la gente decir que crean un JAR gordo y lo implementan. ¿Qué significan en realidad?

El flask gordo es el flask, que contiene clases de todas las bibliotecas, de las que depende su proyecto y, por supuesto, las clases del proyecto actual.

En diferentes sistemas de comstackción, el flask gordo se crea de forma diferente, por ejemplo, en Gradle uno lo crearía con ( instrucción ):

task fatJar(type: Jar) { manifest { attributes 'Main-Class': 'com.example.Main' } baseName = project.name + '-all' from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } with jar } 

En Maven se está haciendo de esta manera (después de configurar el jar regular):

   onejar-maven-plugin.googlecode.com http://onejar-maven-plugin.googlecode.com/svn/mavenrepo     org.dstovall onejar-maven-plugin 1.4.4    0.97 onejar   one-jar     

Fat jar o uber jar es un jar que contiene todos los archivos y recursos de clase de proyecto empaquetados junto con todas sus dependencias. Existen diferentes métodos para lograr tal efecto:

  • Los archivos jar de las dependencias se copian en el contenedor principal y luego se cargan usando un cargador de clases especial (onejar)
  • Las jarras de las dependencias se extraen en la parte superior de la jerarquía jar principal (maven-assembly-plugin con su ensamblado jar-with-dependants, maven-shade-plugin con objective shade)

A continuación se muestra la configuración del plugin de ensamblaje jar-with-dependencies :

  ...  ...    maven-assembly-plugin 2.6   jar-with-dependencies   ...  

En el caso de un contenedor ejecutable, otra forma de pensar sobre un contenedor de grasa es uno que puede ejecutar invocando:

 java -jar myFatLibrary.jar 

sin la necesidad de -cp / --classpath , o incluso haciendo doble clic en el icono de jar.