Java 使用Deploy to Heroku按钮时,将忽略Heroku-mvnw
我希望Heroku在使用Deploy to Heroku按钮时运行我的Java 使用Deploy to Heroku按钮时,将忽略Heroku-mvnw,java,heroku,Java,Heroku,我希望Heroku在使用Deploy to Heroku按钮时运行我的mvnw脚本。目前,Heroku会忽略该脚本,下载并运行它。我的mvnw文件位于项目根目录下,并通过git正确地为755(chmod+x)赋值。当我通过控制台登录时,一切都如预期的那样(mvnw确实是dyno上的755可执行文件,并且使用/mvnw从控制台运行) 我想运行自己的mvnw的原因是我的应用程序是一个独立的胖罐子,已经在bintray上提供了。我只需要用curl下载该文件,并用Procfile运行它。下载和运行mvn
mvnw
脚本。目前,Heroku会忽略该脚本,下载并运行它。我的mvnw
文件位于项目根目录下,并通过git正确地为755(chmod+x)赋值。当我通过控制台登录时,一切都如预期的那样(mvnw
确实是dyno上的755可执行文件,并且使用/mvnw
从控制台运行)
我想运行自己的mvnw
的原因是我的应用程序是一个独立的胖罐子,已经在bintray
上提供了。我只需要用curl下载该文件,并用Procfile
运行它。下载和运行mvn只不过是浪费时间——它是可行的,但也有点过头了
所以有两个相关的问题
Heroku
按钮时未拾取可执行文件mvnw
mvn
,而是运行其他脚本来执行编译/安装编辑我的答案,因为我是一个新的投稿人,还不能发表评论(!)-一个向上投票会很好,这样我就能赢得声誉
- 我特别需要一个“自助服务”,“无需安装”部署。这排除了安装Heroku插件和使用Heroku Maven插件的可能性
- 使用buildpacks可以很好地与deploytoheroku按钮配合使用。应用程序使用以下方法在几秒钟内部署(根据Malak建议使用官方JDK构建包进行编辑)
我编辑了我的
文件,以使用Heroku社区目录中的两个构建包app.json
- 第一个构建包安装Java,但不运行Maven
- 默认情况下,第二个buildpack运行一个名为
的脚本buildpack run.sh
buildpack run.sh
只获取一个预编译的胖jar
#!/bin/sh -x
curl -L "https://dl.bintray.com/.../publicresults-4.4.2.jar" -o publicresults.jar
必须运行git update index--chmod=+x buildpack run.sh,这样脚本在签出时是可执行的
为了在fat jar中运行主类,使用以下Procfile。应用程序打开Heroku通过$port提供的端口
web: java -Dport=$PORT -Xmx512m -Xms128m -cp publicresults.jar app.owlcms.publicresults.Main
Heroku的Java构建包不仅检查
mvnw
,而且还检查.mvn/wrapper/maven wrapper.properties
,以确定是否应该使用maven wrapper。在system.properties
中指定Maven版本时,它也不会运行。通过添加一个空的.mvn/wrapper/maven wrapper.properties
,您可能可以让它正常工作,但我不建议这样做
看起来您并不希望实际使用Maven包装器,而是希望使用自定义构建脚本来构建应用程序。这里有两个选项:
另一个选项见我的答案。如果你想走自己的路,我建议你使用Heroku的官方buildpack,它是积极维护的,并且只安装JVM而不构建源代码。
web: java -Dport=$PORT -Xmx512m -Xms128m -cp publicresults.jar app.owlcms.publicresults.Main