Java buildpack の動作
最終更新日 2025年04月22日(火)
Table of Contents
Heroku プラットフォームと Java buildpack では、デプロイされたあらゆる種類の Java アプリケーションに対して次の動作が行われます。
アクティベーション
Heroku での Java アプリケーション用のデフォルトのビルドシステムは Maven です。pom.xml
ファイルを含むアプリケーションには、Maven 用の Heroku Java サポートが適用されます。
ビルド動作
次のコマンドを実行してアプリをビルドします。
$ mvn -B -DskipTests clean dependency:list install
Heroku はアプリケーションのリポジトリ内に mvnw
スクリプトを検出した場合、デフォルトの Maven インストールの代わりにこのスクリプトを実行します。この動作は Maven バージョンを明示的に設定することによってオーバーライドできます。
パフォーマンスを向上させるため、Maven リポジトリはビルド間でキャッシュされます。
環境変数
dyno にはブート時に次の環境変数が設定されます。
PORT
: Web プロセスはこの HTTP ポートにバインドされますJAVA_HOME
: JDK インストールディレクトリの場所LD_LIBRARY_PATH
: JDK 共有ライブラリの場所JDBC_DATABASE_URL
: DATABASE_URL
変数が存在する場合、この変数は変換された形式で入力されます。詳細は、「Java を使用して Heroku でリレーショナルデータベースに接続する」を参照してください。JAVA_TOOL_OPTIONS
: dyno サイズに基づくデフォルトの Java オプションJAVA_OPTS
: dyno サイズに基づくデフォルトの Java オプション (JAVA_TOOL_OPTIONS
と同様)
JAVA_TOOL_OPTIONS
Java は JAVA_TOOL_OPTIONS
を使用します。これは、コマンドラインにアクセスできないかコマンドラインを変更できない環境でコマンドラインを拡張するためのものです。Heroku ではこの値を dyno サイズに基づくデフォルトの Java オプションを設定するために使用します。Java ではこれが自動的に選択されるため、これを Procfile
コマンドに含める必要はありません。
これらの設定を Procfile
コマンドでオーバーライドすることができ、デフォルトよりも優先されます。たとえば、-Xmx300m
のデフォルトを変更する場合は、次を渡すことができます。
web: java -Xms150M -jar target/myapp.jar
独自の JAVA_TOOL_OPTIONS
環境設定を設定することもできます。独自に設定すると、その値は Heroku のデフォルトに追加され、優先されます。Procfile
コマンドやカスタムの JAVA_TOOL_OPTIONS
でオーバーライドされない個別のオプションは、引き続き有効になります。
Java プロセスが dyno で開始されると、次の Java オプションが JAVA_TOOL_OPTIONS
に追加され、Java によって自動的に選択されます。
-
-Dfile.encoding=UTF-8
dyno サイズのための環境の調整
新しい dyno タイプを選択すると、いくつかの JVM フラグが自動的に JAVA_TOOL_OPTIONS
に追加されます。
Cedar
Cedar 世代の dyno では、JAVA_TOOL_OPTIONS
が dyno サイズごとに次のように設定されています。
プラン | JAVA_TOOL_OPTIONS |
---|---|
Eco | -Xmx300m -Xss512k -XX:CICompilerCount=2 |
Basic | -Xmx300m -Xss512k -XX:CICompilerCount=2 |
Standard-1X | -Xmx300m -Xss512k -XX:CICompilerCount=2 |
Standard-2X | -Xmx671m -XX:CICompilerCount=2 |
Private/Shield-S | -Xmx671m -XX:CICompilerCount=2 |
Performance/Private/Shield-M | -XX:MaxRAMPercentage=80.0 |
Performance/Private/Shield-L | -XX:MaxRAMPercentage=80.0 |
Performance/Private/Shield-L-RAM | -XX:MaxRAMPercentage=80.0 |
Performance/Private/Shield-XL | -XX:MaxRAMPercentage=80.0 |
Performance/Private/Shield-2XL | -XX:MaxRAMPercentage=80.0 |
Fir
すべての Fir 世代の dyno では JAVA_TOOL_OPTIONS
が -XX:MaxRAMPercentage=80.0
に設定されています。
Postgres の自動プロビジョニング
このセクションは、2023 年 5 月 15 日より前に作成されたアカウントまたは Heroku サポートにアカウントの自動プロビジョニングを有効にするように依頼した場合にのみ該当します。
このセクションは Fir 世代のアプリには適用されません。
Heroku Postgres データベースは、Java アプリケーションの初回デプロイで自動的にプロビジョニングされます。これらのアプリは、pom.xml
で、Postgres JDBC ドライバーまたはpgjdbc-ng ドライバーへの依存関係が必要です。この自動プロビジョニングにより DATABASE_URL
環境変数が入力されます。
Postgres アドオンが必要ない場合、次のコマンドを実行してアドオンを削除します。
$ heroku addons:destroy DATABASE --app example-app