Eclipse または IntelliJ IDEA から Heroku への Java アプリケーションのデプロイ
最終更新日 2020年04月10日(金)
Table of Contents
多くの Java 開発者は、IDE からデプロイする方が、コマンドラインからデプロイするよりも自然な操作であることを知っています。この記事では、2 つの有名な Java ベースの IDE である Eclipse および IntelliJ IDEA から Heroku にデプロイする方法について説明します。どちらの場合も、重い処理を行うために Heroku Maven プラグインを使用します。
Heroku Maven プラグインの設定
Heroku Maven プラグインを使用した既存のプロジェクトがある場合、この記事のステップにそのプロジェクトを使用できます。そうでない場合、サンプルプロジェクトの複製から開始します。
$ git clone https://github.com/kissaten/maven-plugin-war-example
その後、次のコマンドを実行して新しい Heroku アプリケーションを作成します。
$ heroku create
Creating gentle-shore-6874... done, stack is heroku-18
https://gentle-shore-6874.herokuapp.com/ | git@heroku.com:gentle-shore-6874.git
次に、いずれかの IDE をインストールする必要があります。Eclipse のダウンロードとインストールは Eclipse ダウンロードサイトの説明に従って行うことができます。IntelliJ の場合、無料の Community エディションをダウンロードしてインストールするか、Ultimate エディションの無料試用版から開始することができます。IDE がインストールされたら、IDE を使用してプロジェクトを開きます。
プロジェクトを Eclipse で開くには、Eclipse のメニューから File
> Import...
を選択します。次に、Maven
を選択し、その下から Existing Maven Projects
を選択します。Next
をクリックし、[Root directory] に複製した Git プロジェクトの場所を入力します。次に、Finish
をクリックします。数秒後、プロジェクトが [Package Explorer] に表示されます。
プロジェクトを IntelliJ IDEA で開くには、File
> Open
を選択し、複製した Git プロジェクトのディレクトリの場所を選択します。
Eclipse からのデプロイ
Eclipse のデプロイを示す短いビデオを見ることができます。
[Package Explorer] ペイン (通常はウィンドウの左側) で、プロジェクトを展開して、ファイルが表示されるようにします。次に、pom.xml
を右クリックして、Run As
> Maven build...
を選択します。
表示されたダイアログで、次に示すように heroku:deploy-war
を [Goals] フィールドに入力します。
スタンドアロンの Java アプリケーションをデプロイする場合、heroku:deploy
ターゲットを使用して、WAR ファイルを使用せずにデプロイできます。スタンドアロンアプリのデプロイについての詳細は、Heroku Maven プラグインのドキュメントを参照してください。
Windows を含む一部のプラットフォームでは、タスクの HEROKU_API_KEY
環境変数も設定することが必要な場合があります。Environment
タブをクリックし、New...
を選択して新しい変数を作成します。名前には “HEROKU_API_KEY” を、値には API キーを入力します。コマンドラインで heroku auth:token
を実行することによって API キーを取得できます。
ここで、Run
をクリックすると、デプロイが開始します。[Console] ペインには、次のような内容が表示されます。
コマンドラインから $ heroku open -a <app-name>
を実行するか、https://<app-name>.herokuapp.com
をブラウズする (ただし <app-name
をアプリの名前に置き換える) ことによって、アプリケーションを開きます。
起動設定の生成
オプションで Maven コマンドを (ターミナルまたは Eclipse から) 実行して、共通のゴールのための起動設定を生成することができます。
$ mvn heroku:eclipse-launch-config
プロジェクトのルートに多数の *.launch
ファイルが作成されます。これらのファイルを Eclipse でクリックして実行することができます。
IntelliJ IDEA からのデプロイ
IntelliJ を開く前に、M2_HOME
環境変数が、Maven のインストール場所に設定されていることを確認してください。この変数を設定しないようにする場合、IntelliJ 内の Preferences
-> Maven
で、Maven インストールのパスを設定することが必要なこともあります。
デプロイするには、IntelliJ IDEA メニューから Run
-> Edit Configurations
を選択します。次に、+
ボタンを選択して新しい Maven 設定を作成します。
以下に示すように、設定に “Heroku Deploy” という名前を付け、"Command Line" フィールドに heroku:deploy-war
を入力します。
スタンドアロンの Java アプリケーションをデプロイする場合、heroku:deploy
ターゲットを使用して、WAR ファイルを使用せずにデプロイできます。スタンドアロンアプリのデプロイについての詳細は、Heroku Maven プラグインのドキュメントを参照してください。
OK
をクリックします。これで、"Heroku Deploy" タスクが Run Configurations ツールバーに表示されます。その横にある緑色の矢印ボタンを押します。
[Console] ペインには、次のような内容が表示されます。
コマンドラインから $ heroku open -a <app-name>
を実行するか、https://<app-name>.herokuapp.com
をブラウズする (ただし <app-name
をアプリの名前に置き換える) ことによって、アプリケーションを開きます。
トラブルシューティング
Failed to deploy application: Forbidden
というエラーを受け取ることがあり、たとえば以下のように表示されることがあります。
[ERROR] Failed to execute goal com.heroku.sdk:heroku-maven-plugin:0.4.1:deploy-war (default-cli) on project helloworld: Failed to deploy application: Forbidden -> [Help 1]
これは、Maven プラグインがアプリを見つけられないことを示しています。次のコマンドを実行して、Git リポジトリに “heroku” リモートがあることを確認します。
$ git remote
heroku
origin
次に、pom.xml
のプラグイン設定に、次のようにしてアプリケーション名を追加してみます。
<configuration>
<appName>gentle-shore-6874</appName>
</configuration>
アプリ名は、"gentle-shore-6874" 以外のものになります。
Failed to deploy application: Unauthorized
というエラーを受け取ることがあり、たとえば以下のように表示されることがあります。
[ERROR] Failed to execute goal com.heroku.sdk:heroku-maven-plugin:0.4.1:deploy-war (default-cli) on project helloworld: Failed to deploy application: Unauthorized -> [Help 1]
これは、設定されたアプリケーションをデプロイする権限がないことを意味しています。次のコマンドを実行して、Toolbelt にログインしているか確認します。
$ heroku auth:whoami
ide-test@heroku.com
その後、HEROKU_API_KEY
の値が正しいことを確認します。
Eclipse と Maven を使用することについての詳細は、Eclipse のドキュメントを参照してください。IntelliJ IDEA と Maven を使用することについての詳細は、IntelliJ のドキュメントを参照してください。
Heroku Maven プラグインについての詳細は、DevCenter の記事「Heroku Maven プラグインを使用した Java アプリケーションのデプロイ」を参照してください。