能否将原生Java Web应用部署到Heroku?heroku deploy:jar命令失效如何处理
旧jar部署命令的状态
- 你留存的操作指引中提到的
heroku deploy:jar,是Heroku已经从核心CLI中移除的废弃内置功能,不是你操作路径不对、或者找错了命令位置,新版本CLI默认不会加载这组命令。 - 但这并不代表你必须搭建对接公网的git部署流程才能完成应用更新,现有官方支持的直接上传jar的方案,完全适配你每年仅部署一次的低频率维护场景,不需要投入大量时间重构现有流程。
低维护成本的最简部署路径
你完全不需要将内网防火墙托管的git仓库做公网映射、打通Heroku与内网的SSH通道、额外搭建CI同步流程,本地操作即可完成全流程部署:
- 沿用现有构建逻辑,在本地构建好包含完整依赖的可运行独立jar包,不需要做任何构建层面的调整。
- 安装Heroku官方提供的Java扩展插件,执行命令:
heroku plugins:install java - 直接运行适配新版本CLI的jar上传命令:
heroku deploy:jar webapp.jar --app my-app提示:这组deploy相关命令现在全部集成在Java扩展插件包内,不属于核心CLI的内置功能,因此未安装插件时,在CLI的帮助列表里找不到对应条目是正常情况。
- 部署完成后CLI会自动完成Java进程的启动配置、端口映射,和原有旧部署流程的运行效果完全一致,不需要手动编写Procfile、修改应用运行配置。
为什么不需要强制使用git部署流程
git push只是Heroku提供的众多部署通道之一,并非唯一可选路径。对于你这种无持续集成需求、低频率更新的应用,走直接上传jar的通道,工作量比搭一套适配内网的git部署流程低90%以上。- 整个部署操作仅依赖本地构建好的jar包,不需要让Heroku主动访问你的内网git仓库,只要本地网络能连通Heroku的API上传通道即可完成操作。
- Java扩展插件在本地安装一次后,后续每年的部署操作直接运行jar上传命令即可,不需要重复做配置。
操作避坑提示
- 如果本地CLI之前安装过旧版的独立deploy插件,先执行
heroku plugins:remove heroku-deploy卸载废弃的旧插件,再安装官方Java插件,避免出现命令冲突报错。 - 应用已经配置的环境变量、自定义域名、附加数据库等资源,全部存储在Heroku服务端,和部署通道无关,通过jar包重新部署不会改动这些已有配置。
内容的提问来源于stack exchange,提问作者Lance Pickup
相关产品推荐
相关产品推荐

