Heroku deployu için 3 dosya oluşturulmasına ihtiyaç vardır.
1. Procfile build jarlarını nereden alacak vs.
2. app.json proje deploy name ve build türü
3. system.properties --> java sürümü
Spring Boot 2.5.X plain.jar Problemi
Spring boot olarak version2.5 ve üzeri kullanıyorsanız. Bu durumda gradle build; executable jar ve plain jar üretir.
Eğer gradle tasklarından assemble'ı çağırırısanız (./gradlew assemble). libs/build altında bir tane executable.jar bir tane de plain jar göreceksiniz.
Executable.jar: classlar + tüm kütüphaneleri içerir yani bizim kuullanmamız gereken fat jardır.
plain.jar: classlar içerir. Bizim buna ihtiyacımız yoktur...
Procfile'da "build/libs/*.jar" jar'la biten herhangi bir dosyayı al diyoruz. Bu durumda elimizde iki tane jar dosyası olacağı için heroku'da hata ile karşılarız.
Çözüm:
Bunu engellemek için build.gradle'a şunu eklememiz gerekir:
jar {
enabled = false
}
repositories'in altına ekleyebilirsiniz:
repositories {
mavenCentral()
}
jar {
enabled = false
}
dependencies {
...