为Java Spring Boot Gradle项目构建一个Heroku Procfile



我的应用程序在本地运行得很好,并与Heroku一起部署,但我正在努力构建一个Procfile,声明应该执行什么命令来启动应用程序。我是一名新的开发人员,可能需要一些关于Linux进程模型如何工作的帮助。

Heroku文档为Java Spring Boot项目提供了两个Procfile示例:

web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/demo-0.0.1-SNAPSHOT.jar

web: java $JAVA_OPTS -cp target/classes:target/dependency/* com.example.HelloWorld

我决定尝试遵循-cp示例,因为我没有任何.jar文件。

这是我当前的Procfile:

web: java $JAVA_OPTS -cp gradlew java/com/deepdraft/deep_draft/DeepDraftApplication.javaprocfile

在最近的一次开发者访谈中,我简要询问了Procfile,他建议我参考我的";gradlew";文件,但我没有机会问我是从这个文件复制命令还是将Procfile指向文件中的命令。我选择了";gradlew";文件复制到我当前Procfile中的主类中。以下是gradlew文件底部收集的参数。gradlew

我已经尝试过通过引用(com.deepdraft.DeepDraftApplication(和路径(java.com/deepdraft/DeepDraftApplication.java(将主类放入Procfile中;错误:无法找到或加载主类"这是完整日志的照片。记录

但老实说,我不知道为什么Procfile需要我编写一个脚本,将文件从一个目录复制到另一个目录。我只是在尝试这个,因为Heroku文档使用这个Procfile作为SpringBoot项目的示例。

如果这些信息到处都是,我很抱歉,但我是一名新的开发人员,很高兴能部署我的第一个应用程序。如何构建Procfile?

(编辑(好的,实际上我找到了一个jar文件!我用的是";。罐子";在我的终端而不是";罐子";并找到了一个gradlewrapper.jar文件。我将尝试使用这个文件来遵循上面的第一个Procfile示例,使用-jar命令。梯度振打器

(编辑2(哇,我觉得我离得太近了。收到新的错误消息真是令人兴奋。哈哈。上面写着";没有主清单属性";在.jar文件中。新日志我发现了这个关于添加清单属性的堆栈溢出对话,但我无法编辑这个压缩文件,而我拥有的与该开发人员文件最相似的文件(包含所有依赖项(是我的build.gradle文件中的数据。build.gradle文件我现在会尝试编辑.jar文件,但任何评论都将不胜感激!

heroku引用的jar文件是项目的可执行jar文件。现在有两种情况:

  1. 对于maven springboot项目,我们使用";mvn包";在项目目录中。之后,您应该能够在目标文件夹中找到jar文件
  2. 对于gradle springboot项目,您应该能够做同样的事情

您还可以在项目根目录上创建名为Procfile的文件,并将其放入此行:web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/nameOfMyApp-0.0.1-SNAPSHOT.jar

相关内容

  • 没有找到相关文章

最新更新