什么是胖罐?
我听人们说他们创建了一个胖JAR并部署它。它们实际上意味着什么?
胖罐是罐子,它包含项目所依赖的所有库中的类,当然还有当前项目的类。
在不同的构建系统中,脂肪罐的创建方式不同,例如,在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>
Skinny – 仅包含您在代码编辑器中键入的位,不包含其他任何内容。
精简 – 包含上述所有内容,加上应用对应用的直接依赖关系(数据库驱动程序、实用程序库等)。
空心 – Thin 的反义词 – 仅包含运行应用所需的位,但不包含应用本身。基本上是一个预先打包的“应用程序服务器”,您可以稍后将应用程序部署到该服务器,其样式与传统的Java EE应用程序服务器相同,但具有重要的区别。
Fat/Uber – 包含您自己编写的位,加上应用程序的直接依赖关系,以及“自行”运行应用程序所需的位。
来源:来自Dzone的文章