什么是胖罐?

2022-08-31 06:52:38

我听人们说他们创建了一个胖JAR并部署它。它们实际上意味着什么?


答案 1

胖罐是罐子,它包含项目所依赖的所有库中的类,当然还有当前项目的类。

在不同的构建系统中,脂肪罐的创建方式不同,例如,在Gradle中,人们会使用(指令)创建它:

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
}

在Maven中,它是这样完成的(在设置了常规jar之后):

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

<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>

答案 2

不同的名称只是打包java应用程序的方法。

Skinny – 仅包含您在代码编辑器中键入的位,不包含其他任何内容。

精简 – 包含上述所有内容,加上应用对应用的直接依赖关系(数据库驱动程序、实用程序库等)。

空心 – Thin 的反义词 – 仅包含运行应用所需的位,但不包含应用本身。基本上是一个预先打包的“应用程序服务器”,您可以稍后将应用程序部署到该服务器,其样式与传统的Java EE应用程序服务器相同,但具有重要的区别。

Fat/Uber – 包含您自己编写的位,加上应用程序的直接依赖关系,以及“自行”运行应用程序所需的位。

来源:来自Dzone的文章

Visual representation of JAR types


推荐