実行可能な JAR ファイルのデプロイ
最終更新日 2023年11月29日(水)
Table of Contents
多くの Java および JVM アプリケーションは、アプリケーションコード、設定、依存関係を含む自己完結型実行可能 JAR ファイルにパッケージ化されます。これらの成果物は、多くの場合、「uberjar」や「fat jar」と呼ばれます。
この記事では、fat JAR を Heroku にデプロイするための複数のさまざまなテクニックを示します。
Heroku Java CLI プラグインの使用
Heroku Java CLI プラグインは、セットアップや依存関係がほとんどない、事前にビルドされた JAR ファイルをデプロイできます。これを使用するには、Heroku アカウントを作成し、Heroku CLI をインストールしている必要があります。続いて次のコマンドを実行して、プラグインをインストールします。
$ heroku plugins:install java
次にアプリケーションを作成します。
$ heroku create --no-remote
また、次のコマンドを実行し、アプリ名 (この場合 sushi
) を以前のコマンドで生成されたアプリ名に置き換えて、JAR ファイルをデプロイします。
$ heroku deploy:jar target/my-app.jar --app sushi
Procfile
を作成するか、デプロイに追加ファイルを含めることによって、JAR ファイルの実行をカスタマイズできます。
Heroku Maven プラグインの使用
Heroku Maven プラグインは、「Heroku Maven プラグインを使用した Java アプリケーションのデプロイ」の説明に従って使用できますが、次の設定を使用します。
<includeTarget>false</includeTarget>
<includes>
<include>target/my-app-1.0.jar</include>
</includes>
続いて、次のように設定を追加することで、JAR を実行するようにプロセスタイプを設定します。
<processTypes>
<web>java -jar target/my-app-1.0.jar</web>
</processTypes>
「Heroku Maven プラグインを使用した Java アプリケーションのデプロイ」の説明に従ってデプロイをカスタマイズできます。
Git を使用したデプロイ
git push heroku master
を使用して Heroku にソースコードをデプロイする場合 (「Git を使用したデプロイ)」で説明)、JAR ファイルはアプリの slug に含まれます。必要なのは、アプリの Procfile で、実行する方法を定義するだけです。たとえば、次のようになります。
web: java -jar target/myapp.jar
必ず Procfile
の変更内容を Git リポジトリに追加してください。
Scala、Clojure、および Gradle を使用したデプロイ
他の JVM 言語には、実行可能な JAR ファイルを Heroku にデプロイするためのサポートがあります。詳細については、次を参照してください。
- Gradle: Heroku での Gradle アプリのデプロイ
- Clojure: Git を使用した Uberjar のデプロイ