java - Heroku - 使用 Deploy to Heroku 按钮时忽略 mvnw
问题描述
我希望 Herokumvnw
在使用 Deploy to Heroku 按钮时运行我的脚本。目前 Heroku 会忽略脚本,下载mvn
并运行它。我的mvnw
文件位于项目根目录中,并且确实通过 git 正确地赋予了 755 (chmod+x) 属性。当我通过控制台登录时,一切都如预期的那样(在测功机mvnw
上确实是 755 可执行文件,并且确实从控制台运行./mvnw
)。
我想自己运行的原因mvnw
是我的应用程序是一个独立的胖 jar,已经在bintray
. 我只需要使用 curl 下载文件并使用Procfile
. 下载和运行 mvn 只是浪费时间 - 它可以工作,但有点过分了。
所以两个相关的问题真的
- 为什么使用“部署到”按钮
mvnw
时未拾取可执行文件。Heroku
- 有没有另一种方法告诉
Heroku
不要运行mvn
,而是运行其他一些脚本来执行编译/安装。
解决方案
Heroku 的 Java buildpack 不仅检查mvnw
,而且.mvn/wrapper/maven-wrapper.properties
确定是否应该使用 Maven 包装器。当您在system.properties
. 您可能可以通过添加一个 empty 来使其工作.mvn/wrapper/maven-wrapper.properties
,但我不建议您走这条路线。
看起来您不想实际使用 Maven 包装器,而是使用自定义构建脚本来构建您的应用程序。您在这里有两个选择:
- 您可以使用Heroku 的 Maven 插件来部署您的 fat-jar。这将为您上传 JAR 和生成的 Procfile,并且在构建过程中无需安装 Maven 即可工作。
- 如果您想完全控制构建过程,您可以编写自定义构建包。Buildpacks 本质上是一堆脚本,运行这些脚本以从您的源代码创建可运行的应用程序映像。这需要您付出一些努力,我认为 Maven 插件路由可能更适合您的用例,但我不想不提及这一点。您可以在此处阅读有关构建包的更多信息:https ://devcenter.heroku.com/articles/buildpack-api
推荐阅读
- mysql - 如何将 mysql 数据库连接到客户端机器中的多人电脑?
- gatsby - 静态页面路由和仅客户端路由之间的Gatsby或 @reach-router ?
- sql - SQL 查询中每个标题只显示一行
- file - Serilog Net Core 3.1 不创建任何日志文件
- angular - 角度组件路由到主页
- google-app-engine - 如何对从 Google Cloud Storage 存储桶下载的用户实施速率限制?
- c++ - 如何使用 wincrypt.h 在 c++ 中检查 x509 证书的吊销状态?
- python - Python中的斑点检测?
- powershell - 如何使用 powershell 对多个模式进行 grep
- javascript - React-redux,reducer 无法更新状态,代码错误