¿Qué es un FRASCO de grasa?


He oído a la gente decir que crean un TARRO gordo y lo despliegan. ¿Qué significan en realidad ?

Author: Yves M., 2013-10-03

3 answers

El fat jar es el jar, 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 compilación, fat jar se crea de manera 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 jar regular):

<pluginrepositories>
    <pluginrepository>
        <id>onejar-maven-plugin.googlecode.com</id>
        <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
    </pluginrepository>
</pluginrepositories>

<!-- ... -->

<plugin>
    <groupid>org.dstovall</groupid>
    <artifactid>onejar-maven-plugin</artifactid>
    <version>1.4.4</version>
    <executions>
        <execution>
            <configuration>
                <onejarversion>0.97</onejarversion>
                <classifier>onejar</classifier>
            </configuration>
            <goals>
                <goal>one-jar</goal>
            </goals>
        </execution>
   </executions>
</plugin>
 62
Author: Dmitry Ginzburg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 17:00:56

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

  • los jars de las dependencias se copian en el jar principal y luego se cargan usando el cargador de clases especiales (onejar)
  • los jars de dependencias se extraen en la parte superior de la jerarquía principal de jar (maven-assembly-plugin con su jar-with-dependencies assembly, maven-shade-plugin con shade objetivo)

Debajo de la configuración del complemento de ensamblaje de ejemplo jar-with-dependencies :

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <!-- NOTE: We don't need a groupId specification because the group is
             org.apache.maven.plugins ...which is assumed by default.
         -->
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <classifier
        </configuration>
        ...
</project>
 9
Author: MeTTeO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-11 04:31:58

En el caso de un jar ejecutable, otra forma de pensar en un jar fat es una que puedes ejecutar invocando:

java -jar myFatLibrary.jar

Sin la necesidad de -cp / --classpath, o incluso haciendo doble clic en el icono del frasco.

 5
Author: Sridhar-Sarnobat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-10 16:23:55