How to release a java app?
我能想到3种方式:
- 打一个assembly jar,然后distribute这个single fat jar。
- 按照标准java应用的结构打一个zip包或tar包或rpm包等。这个包安装后会包含lib, bin, conf等目录。bin下是运行脚本,lib下是项目的所有依赖,conf下是配置文件。对于复杂项目也会包含其他目录比如ext,甚至前端的一些文件等。
- 构建出一个native的image,一般是基于Graalvm命令。native的app基于特定的平台构建, 不需要java运行环境即可运行, 可以说是最理想的发布方式,但实际操作起来有很多潜在的问题需要解决,不是所有的lib都支持Graalvm。
1,2都需要java运行环境,#2是生产环境中采用的最多的方式,也是推荐的方式。常见的jvm应用,比如zookeeper, hadoop等都是类似于#2这种方式打包发布的。