簡體   English   中英

Paketo Spring boot 3.0 jar issue

[英]Paketo Spring boot 3.0 jar issue

我目前正在遷移到 Spring 引導 3.0。 在此過程中,我正在考慮使用新集成的本機支持。

使用 pack 構建和發布我的圖像時,出現錯誤:

Executing native-image -H:+StaticExecutableWithDynamicLibC -jar /workspace 
Error: /workspace is a directory. (-jar requires a valid jarfile)

顯然,本機圖像 buildpack 正在嘗試使用該文件夾而不是 jar。我正在使用此命令來嘗試構建圖像。

 pack -v build ghcr.io/kevinbos-cc/buildpacks-demo:latest \
          --builder paketobuildpacks/builder:tiny \
          --path . \
          --env "BP_JVM_VERSION=17" \
          --env "BP_NATIVE_IMAGE=true" \
          --cache-image ghcr.io/kevinbos-cc/buildpacks-demo-paketo-cache-image:latest \
          --publish

我試圖更改paketo-buildpacks/java-native-image版本並使用paketo-buildpacks/graalvm 不幸的是,這些更改產生了相同的結果。

運行./gradle bootBuildImage 時,圖像創建得很好。 但是我不知道如何在 pack 命令中重現它。

可以在此處找到完整的堆棧跟蹤。

如果有人能指出我正確的方向,那就太好了!

我相信您在 Spring/Gradle 和 Buildpacks 之間遇到了一個相當普遍的問題。

我認為是在 Spring Boot 2.7 中,更改了一個設置,導致 Gradle 構建在默認情況下生成引導文件和常規 JAR 文件。 就其本身而言,這不是問題,但 buildpack 需要處理多個 JAR 文件,而不是處理單個 JAR 文件,並且像本機映像構建這樣的一些東西仍然只適用於單個 JAR 文件。

我確定您的構建正在生成兩個 JAR 文件,正如我在您鏈接的 output 中看到的那樣。 它說:

恢復多個工件

所以這是一個很好的跡象,表明你正在解決這個問題。

好消息是這是一個簡單的修復。 你只需要告訴 Gradle 只構建引導化的 JAR。

在您的build.gradle設置:

jar {
    enabled = false
}

build.gradle.kts

tasks.getByName<Jar>("jar") {
    enabled = false
}

在此處此處查看 Kotlin

如果這沒有幫助,您可能遇到了錯誤。 在這種情況下,請在此處打開一個問題並發布一個示例以進行重現

暫無
暫無

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

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