JAR および WAR ファイルのデプロイ
最終更新日 2025年02月24日(月)
多くの JVM アプリケーションは、アプリケーションコード、設定、依存関係を含む自己完結型実行可能 JAR ファイルまたは WAR ファイルにパッケージ化できます。Git デプロイの代替として、Heroku は JAR ファイルと WAR ファイルを直接デプロイするためのコマンドラインツールを提供しています。
このデプロイ方法は、Git デプロイによってアプリのサイズ制限が超過した場合に役立ちます。このデプロイを使用して、Heroku にデプロイする前に Jenkins などの既存の継続的インテグレーション (CI) インフラストラクチャでアプリをビルドおよびテストすることもできます。
要件とインストール
Heroku JVM Application Deployer では、アプリをデプロイするマシンに OpenJDK 8 以降がインストールされている必要があります。
GitHub の最新リリースから Heroku JVM Application Deployer JAR ファイルをダウンロードします。
認証
Heroku JVM Application Deployer は Heroku Platform API を使用するため、機能するには API キーが必要です。Heroku CLI をインストールし、heroku login
を使用してログインすると、このデプロイツールによって API キーが自動的に取得されます。
Heroku CLI をインストールしていない場合、デプロイツールは Heroku API キーを HEROKU_API_KEY
環境変数から読み取ろうとします。
実行可能な JAR ファイルのデプロイ
次のコマンドは JAR ファイルを Heroku にデプロイします。このコマンドは、java -jar
を使用してデプロイされた JAR ファイルを実行する Procfile を生成してデプロイします。
java -jar heroku-jvm-application-deployer.jar --app=nameless-dusk-88303 /path/to/app.jar
java -jar
では、JAR マニフェストに Main-Class
属性が指定されている JAR ファイルのみ実行できます。java -jar
を使用しても JAR ファイルを実行できない場合は、カスタム Procfile を提供する必要があります。
-----> Packaging application...
- including: Procfile (hidden)
- including: test-1.0-SNAPSHOT-jar-with-dependencies.jar
-----> Creating build...
- file: /tmp/heroku-deploy3032832562328358957source-blob.tgz
- size: 3MB
-----> Uploading build...
Uploaded 4 KB/3 MB (0.1%, 4 KB/s)
Uploaded 1 MB/3 MB (50.6%, 1 MB/s)
Uploaded 2 MB/3 MB (90.3%, 1 MB/s)
- success (3.1 seconds)
-----> Deploying...
remote:
remote: -----> Building on the Heroku-24 stack
remote: -----> Using buildpack: heroku/jvm
remote: -----> JVM Common app detected
remote: -----> Installing OpenJDK 21... done
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 76.4M
remote: -----> Launching...
remote: Released v6
remote: https://nameless-dusk-88303-9d9b2a3590bf.herokuapp.com/ deployed to Heroku
remote:
-----> Done
WAR ファイルのデプロイ
WAR ファイルのデプロイは、実行可能な JAR ファイルのデプロイと同じように機能します。デプロイツールは Heroku の Webapp Runner の最新リリースをダウンロードし、WAR ファイルを使用してデプロイします。
デプロイツールは Webapp Runner を使用して WAR ファイルを実行する Procfile も生成してデプロイします。
java -jar heroku-jvm-application-deployer.jar --app=nameless-dusk-88303 /path/to/app.war
-----> Downloading webapp-runner 10.1.28.0...
-----> Packaging application...
- including: Procfile (hidden)
- including: test-1.0-SNAPSHOT.war
- including: .heroku/webapp-runner.jar
-----> Creating build...
- file: /tmp/heroku-deploy7572390222443658138source-blob.tgz
- size: 24MB
-----> Uploading build...
Uploaded 4 KB/24 MB (0.0%, 4 KB/s)
Uploaded 23 MB/24 MB (96.0%, 24 MB/s)
- success (1.2 seconds)
-----> Deploying...
remote:
remote: -----> Building on the Heroku-24 stack
remote: -----> Using buildpack: heroku/jvm
remote: -----> JVM Common app detected
remote: -----> Installing OpenJDK 21... done
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 97.6M
remote: -----> Launching...
remote: Released v8
remote: https://nameless-dusk-88303-9d9b2a3590bf.herokuapp.com/ deployed to Heroku
remote:
-----> Done
OpenJDK バージョンの設定
デプロイツールでは Heroku の Java サポートリファレンスで定義されているものと同じ OpenJDK バージョンをサポートします。同じデフォルトバージョンも使用します。OpenJDK のバージョンを設定するには、--jdk
フラグを使用します。
java -jar heroku-jvm-application-deployer.jar --jdk 21 --app=nameless-dusk-88303
このコマンドは、設定された OpenJDK バージョンの system.properties
ファイルを生成してデプロイします。現在の作業ディレクトリに system.properties
ファイルが存在する場合、デプロイツールは代わりにこのファイルをデプロイして使用します。
自動的に追加されるファイルとディレクトリ
Heroku JVM Application Deployer は、現在の作業ディレクトリに特定のファイルとディレクトリが存在する場合、自動的にそれらを追加します。該当するファイルは次のとおりです。
Procfile
(「Procfile)」を参照)system.properties
(「Heroku の Java サポート)」を参照).jdk-overlay
(「JDK のカスタマイズ)」を参照)
これらのファイルが自動的に含まれないようにするには、--disable-auto-includes
フラグを渡します。