簡體   English   中英

為 Java Spring Boot Gradle 項目構建一個 Heroku Procfile

[英]Building a Heroku Procfile for Java Spring Boot Gradle project

我的應用程序在本地運行得非常好,並使用 Heroku 進行部署,但我正在努力構建一個 Procfile,該文件聲明應該執行什么命令來啟動應用程序。 我是一名新開發人員,需要一些幫助來了解 Linux 進程 model 的工作原理。

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.java procfile

在最近的一次開發人員訪談中,我簡要詢問了 Procfile,他建議我在編寫 Procfile 時參考我的“gradlew”文件,但我沒有機會詢問我是從該文件復制命令還是引導 Procfile到文件中的命令。 我選擇將“gradlew”文件復制到當前 Procfile 中的主 class 作為猜測。 下面是gradlew文件底部收集到的arguments。 畢業生

我嘗試通過引用 (com.deepdraft.deep_draft.DeepDraftApplication) 和路徑 (java/com/deepdraft/deep_draft/DeepDraftApplication.java) 將主要的 class 放入 Procfile。 兩個 Procfiles 都會生成一個日志,上面寫着“錯誤:無法找到或加載主 class”。 這是完整日志的照片。 日志

但老實說,我不確定為什么 Procfile 需要我編寫一個腳本來將文件從一個目錄復制到另一個目錄。 我只是嘗試這個,因為 Heroku 文檔使用此 Procfile 作為 SpringBoot 項目的示例。

抱歉,如果這些信息到處都是,但我是一名新開發人員,非常高興能夠部署我的第一個應用程序。 如何構建 Procfile?

(編輯)好的,實際上我找到了一個 jar 文件。 我在我的終端中使用“.jar”而不是“jar”並且找到了一個 gradlewrapper.jar 文件,我將嘗試使用這個文件來遵循上面的第一個 Procfile 示例。 使用 -jar 命令。 gradlewrapper.jar

(編輯2)哇,我覺得我很親近。 收到新的錯誤消息令人興奮。 哈哈。 它說“沒有主要清單屬性”在 .jar 文件中。 新日志我發現這個關於添加清單屬性的堆棧溢出對話,但我無法編輯這個壓縮文件,我擁有的最類似於開發人員文件(包含所有依賴項)的文件是我保存的數據build.gradle 文件。 build.gradle 文件我現在將嘗試編輯 .jar 文件,但如有任何意見,我們將不勝感激!

您還可以在項目的根目錄下創建名稱為Procfile的文件,並放入此行: web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/nameOfMyApp-0.0.1-SNAPSHOT.jar

heroku 所引用的 jar 文件是您項目的可執行 jar 文件。 現在有兩種情況:

  1. 對於 maven springboot 項目,我們在項目目錄中使用“mvn package”。 之后,您應該能夠在目標文件夾中找到 jar 文件。
  2. 對於 gradle springboot 項目,您應該能夠執行相同的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM