我听到有人说他们创建了一个胖JAR并部署它。他们究竟意味着什么?什么是脂肪JAR?
59
A
回答
50
fat jar是jar,它包含所有库的类,你的项目依赖于这些类,当然还有当前项目的类。
在不同的编译系统的脂肪罐子创建不同的,例如,在摇篮一个将与(instruction)创建:
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的它正在做这样(设置常规罐子后):
<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>
8
胖jar或uber jar是一个jar包含所有项目类文件和资源与所有它的依赖关系打包在一起。有用于实现这样的效果不同的方法:
- 依赖性罐子被复制到主罐,然后使用特殊的类装载程序(onejar)
- 依赖加载罐子在主罐层次结构的顶部(行家萃取 - 装配 - 插件与它的罐子,有依赖性组装,行家遮阳帘插件带灯罩的目标)
下面的示例组件插件配置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>
4
在一个可执行的JAR的情况下,另一种方式来思考脂肪罐子是一个你可以通过调用执行:
java -jar myFatLibrary.jar
无需-cp
/--classpath
,甚至双击图标罐子。
+0
请记住,-jar需要MANIFEST.MF中的Main-Class标题:https://docs.oracle.com/javase/tutorial/deployment/jar/run.html – MeTTeO
+0
甚至对于非脂肪罐也是如此,所以不相关。 –
相关问题
- 1. 什么对脂肪JAR的gradle这个选择吗?
- 2. 为什么我glyphicon铅笔脂肪
- 3. perl的脂肪逗号
- 4. 重构脂肪减少者
- 5. UIToolbar与异常脂肪UISegmentedControl
- 6. Vertx Webroot在脂肪罐
- 7. 如何使用Proguard和SBT混淆脂肪Scala Jar
- 8. PHP MVC脂肪控制器VS高脂模型
- 9. ECMA双脂肪箭头使用?
- 10. Backbone.js的和无脂肪的框架:约
- 11. 不含脂肪框架入门错误
- 12. 如何用gradle建立脂肪罐1.6
- 13. 从一些jQuery修剪脂肪
- 14. Gnuplot脂肪线与轴重叠
- 15. 如何使用CoffeeScript的脂肪箭头
- 16. 设计模式 - 脂肪适配器
- 17. 路由在不含脂肪框架
- 18. 脂肪箭头“这个”范围
- 19. 部署弹簧引导脂肪罐
- 20. 如何为EE CDI建立脂肪罐?
- 21. 无脂肪的错误跟踪并不总是可见的
- 22. CoffeeScript的脂肪箭头访问不是父“这个”
- 23. 片段是否会导致脂肪活动?
- 24. 什么是PROD数据库密码在Springboot脂肪罐子应用连接数据库
- 25. 是什么在LTO和海湾合作委员会之间的区别脂肪LTO-对象
- 26. 体脂肪方程的线性回归(MATLAB)
- 27. FreeRTOS脂肪循环问题,有没有可能用50hz写512bytes?
- 28. PHP不含脂肪,如何使用验证码插件
- 29. 获得“_OBJC_CLASS _ $ _ NgnEngine”连接iOS的脂肪库
- 30. ESLint与使用脂肪箭头的Airbnb规则
当您想将产品以jar的形式发货时,您通常希望将所有依赖jar中的类放入一个大jar文件中。 – Nishu
@Nadeem_MK http://meta.stackexchange.com/questions/5280/embrace-the-non-googlers http://meta.stackexchange.com/questions/8724/how-should-we-deal-with-google-问题 – eis
原来的答案是指向这个链接:http://www.javacodegeeks.com/2012/11/packing-your-java-application-as-one-or-fat-jar.html –