gpt4 book ai didi

java - Heroku - 使用“部署到 Heroku”按钮时忽略 mvnw

转载 作者:行者123 更新时间:2023-12-01 18:36:03 25 4
gpt4 key购买 nike

我希望 Heroku 在使用“部署到 Heroku”按钮时运行我的 mvnw 脚本。目前 Heroku 忽略该脚本,下载 mvn 并运行它。我的 mvnw 文件位于项目根目录,并且确实通过 git 正确归因了 755 (chmod+x)。当我通过控制台登录时,一切都按预期进行(mvnw 在 dyno 上确实是 755 可执行文件,并且确实使用 ./mvnw 从控制台运行)。

我想运行自己的 mvnw 的原因是我的应用程序是一个独立的 fat jar,已经在 bintray 上可用。我所需要的只是使用curl 下载文件并使用Procfile 运行它。下载并运行 mvn 只是浪费时间 - 它可以工作,但有点过分了。

确实有两个相关的问题

  1. 为什么使用“部署到 Heroku”按钮时未选取可执行文件 mvnw
  2. 是否有另一种方法可以告诉 Heroku 不要运行 mvn 而是运行其他脚本来执行编译/安装。

最佳答案

Heroku 的 Java buildpack 不仅检查 mvnw,还检查 .mvn/wrapper/maven-wrapper.properties 以确定是否应使用 Maven 包装器。当您在 system.properties 中指定 Maven 版本时,它也不会运行。您也许可以通过添加空的 .mvn/wrapper/maven-wrapper.properties 来使其工作,但我不建议采用此方法。

看起来您并不想实际使用 Maven 包装器,而是想使用自定义构建脚本来构建应用程序。您在这里有两个选择:

  1. 您可以使用Heroku's Maven plugin部署你的 fat-jar。这将为您上传 JAR 和生成的 Procfile,并且在构建过程中无需安装 Maven 即可运行。
  2. 如果您想完全控制构建过程,您可以编写自定义构建包。本质上,构建包是一组脚本,运行这些脚本是为了从源创建可运行的应用程序镜像。这需要您付出一些努力,我认为 Maven 插件路线可能更适合您的用例,但我不想忽略这一点。您可以在此处阅读有关构建包的更多信息:https://devcenter.heroku.com/articles/buildpack-api

关于java - Heroku - 使用“部署到 Heroku”按钮时忽略 mvnw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60041907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com