Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Bundler の使用
      • Rails のサポート
    • Python
      • Django の使用
      • Python でのバックグランドジョブ
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Play Framework の使用
      • Java の高度なトピック
      • Spring Boot の使用
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • 言語サポート
  • Java
  • Maven の使用
  • Heroku Maven プラグインを使用した Java アプリケーションのデプロイ

Heroku Maven プラグインを使用した Java アプリケーションのデプロイ

日本語 — Switch to English

最終更新日 2020年07月13日(月)

Table of Contents

  • プラグインの追加
  • プラグインを使用したデプロイ
  • 高度な設定
  • 複数のアプリケーションへのデプロイ

Git デプロイ​に加えて、Heroku は API を介したアプリのビルドおよびリリース​をサポートします。Heroku Maven プラグイン​はこの API を使用して、事前パッケージ済みスタンドアロン Web アプリケーションの直接デプロイを Heroku に提供します。

この方法は、コンパイルに時間がかかったり、Travis CI​ や Jenkins などの継続的インテグレーション サーバーからデプロイする必要があったりするアプリケーションにとっては推奨される方法となる場合があります。

この記事では、Heroku Maven プラグインをプロジェクトに組み込んで設定し、アプリケーションを Heroku にデプロイする方法について学びます。

プラグインの追加

プラグインをプロジェクトに組み込むには、pom.xml​ ファイルに次のコードを追加します。

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>com.heroku.sdk</groupId>
        <artifactId>heroku-maven-plugin</artifactId>
        <version>3.0.3</version>
      </plugin>
    </plugins>
  </build>
</project>

その後、次のコードを実行して新しい Heroku アプリケーションを作成します。

$ heroku create

アプリケーションが Git でバージョン管理されている場合、プラグインはアプリケーション名をデフォルトで検出します。Git を使用していない場合、この設定をプラグインに追加する必要があります (ただし、アプリ名をご使用のアプリの名前に置き換えてください)。

<configuration>
  <appName>sushi</appName>
</configuration>

アプリケーションが WAR ファイルとしてパッケージ化されている場合はこの設定で十分ですが、アプリケーションがスタンドアロンの Java アプリケーションの場合はプロセスタイプを定義する必要があります。

プロセスタイプはアプリケーションを開始するときに使用されるコマンドです。これらはプロセスタイプおよび Procfile​の記事に記載されているように、Procfile​ を使用して設定できます。または、次に示すように、pom.xml​ に直接設定できます。

<configuration>
  ...
  <processTypes>
     <web>java $JAVA_OPTS -cp target/classes:target/dependency/* Main</web>
  </processTypes>
</configuration>

上記の設定により、Main​ クラスを使用して Web プロセスを開始するよう Heroku に通知されます。プロセスタイプはアプリケーションコードによって異なります。

これでデプロイできます。

プラグインを使用したデプロイ

アプリケーションが WAR としてパッケージ化されている場合、次のコマンドで slug を作成して Heroku にデプロイできます。

$ mvn clean heroku:deploy-war
...
[INFO] -----> Packaging application...
[INFO]        - app: obscure-sierra-7788
[INFO]        - including: ./target/dependency/webapp-runner.jar
[INFO]        - including: ./target/my-app.war
[INFO] -----> Creating build...
[INFO]        - file: target/heroku/slug.tgz
[INFO]        - size: 1MB
[INFO] -----> Uploading build...
[INFO]        - success
[INFO] -----> Deploying...
[INFO] remote:
[INFO] remote: -----> Fetching custom tar buildpack... done
[INFO] remote: -----> JVM Common app detected
[INFO] remote: -----> Installing OpenJDK 1.8... done
[INFO] remote: -----> Discovering process types
[INFO] remote:        Procfile declares types -> web
[INFO] remote:
[INFO] remote: -----> Compressing... done, 49.5MB
[INFO] remote: -----> Launching... done, v157
[INFO] remote:        https://obscure-sierra-7788.herokuapp.com/ deployed to Heroku
[INFO] remote:
[INFO] -----> Done
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:04 min
[INFO] Finished at: 2014-11-11T16:07:11-06:00
[INFO] Final Memory: 20M/304M
[INFO] ------------------------------------------------------------------------

アプリケーションがスタンドアロンの場合 (したがってプロセスタイプが必要な場合)、次のコマンドでデプロイできます。

$ mvn clean heroku:deploy
...
[INFO] -----> Packaging application...
[INFO]        - app: obscure-sierra-7788
[INFO]        - including: ./target/
[INFO] -----> Creating build...
[INFO]        - file: target/heroku/slug.tgz
[INFO]        - size: 1MB
[INFO] -----> Uploading build...
[INFO]        - success
[INFO] -----> Deploying...
[INFO] remote:
[INFO] remote: -----> Fetching custom tar buildpack... done
[INFO] remote: -----> JVM Common app detected
[INFO] remote: -----> Installing OpenJDK 1.8... done
[INFO] remote: -----> Discovering process types
[INFO] remote:        Procfile declares types -> web
[INFO] remote:
[INFO] remote: -----> Compressing... done, 49.5MB
[INFO] remote: -----> Launching... done, v157
[INFO] remote:        https://obscure-sierra-7788.herokuapp.com/ deployed to Heroku
[INFO] remote:
[INFO] -----> Done
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:04 min
[INFO] Finished at: 2014-11-11T16:07:11-06:00
[INFO] Final Memory: 20M/304M
[INFO] ------------------------------------------------------------------------

これで、次のコマンドを使用してアプリケーションにアクセスできます。

$ heroku open

または、次のコマンドでログを表示します。

$ heroku logs

Heroku CLI によってユーザーは、アプリケーションへのアクセスが可能になり、git push​ でデプロイされたアプリケーションのようにコマンドを実行できるようになります。

高度な設定

Maven プラグインではいくつかの高度な設定を行うことができます。これらすべての設定は、pom.xml​ ファイルのプラグインについての <configuration>​ 要素で定義されます。たとえば、目的の JDK バージョンを次のように設定できます。

<jdkVersion>1.8</jdkVersion>

有効な値と現在のデフォルトバージョンについては、『Heroku の Java サポート​』を参照してください。

設定変数を次のように設定できます。

<configVars>
  <MY_VAR>SomeValue</MY_VAR>
  <JAVA_OPTS>-Xss512k -XX:+UseCompressedOops</JAVA_OPTS>
</configVars>

<configVars>​ に定義されるすべての変数は、デフォルトまたは以前定義された環境設定を上書きすることに注意してください。

また、次のように slug に追加のディレクトリを含めることができます (プロジェクトルートを基準とした相対ディレクトリである必要があります)。

<includes>
  <include>etc/readme.txt</include>
</includes>

デフォルトでは、プラグインは不可欠のディレクトリをプロジェクトの target​ ディレクトリの下にパッケージ化するため、追加のディレクトリを組み込むことは、ほとんどの場合は必要ありません。

WAR ファイルの別の場所を次のように指定できます。

<warFile>relative/path/myapp.war</warFile>

ただし、これは heroku:deploy-war​ ゴールを使用してデプロイする場合のみ受け入れられます。

複数のアプリケーションへのデプロイ

ほとんどの実際のアプリケーションは、複数の Heroku アプリ (開発、テスト、本番など) へのデプロイが必要です。通常の場合、これは複数の Git リモートで実行されます。ただし、プラグインを使用すると、システムプロパティ、環境変数、または他のネイティブの Maven/Java 設定方法を使用できます。たとえば、heroku.appName​ を次のようにシステムプロパティとして定義することがあります。

$ mvn heroku:deploy -Dheroku.appName=myapp

しかし、推奨されるアプローチでは Maven プロファイルを使用します。設定の例は次のようになります。

<build>
  <plugins>
    <plugin>
      <groupId>com.heroku.sdk</groupId>
      <artifactId>heroku-maven-plugin</artifactId>
      <configuration>
        <processTypes>
          <web>java $JAVA_OPTS -cp target/classes:target/dependency/* Main</web>
        </processTypes>
      </configuration>
    </plugin>
  </plugins>
</build>
<profiles>
  <profile>
    <id>test</id>
    <build>
      <plugins>
        <plugin>
          <groupId>com.heroku.sdk</groupId>
          <artifactId>heroku-maven-plugin</artifactId>
          <configuration>
            <appName>myapp-test</appName>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
  <profile>
    <id>prod</id>
    <build>
      <plugins>
        <plugin>
          <groupId>com.heroku.sdk</groupId>
          <artifactId>heroku-maven-plugin</artifactId>
          <configuration>
            <appName>myapp-prod</appName>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

プラグインおよび Java デプロイの全般についての詳細は、『Heroku の Java サポート​』を参照してください。Maven についての詳細は、Apache Maven のドキュメント​を参照してください。

関連カテゴリー

  • Maven の使用
管理されていない依存関係を Maven プロジェクトに追加する Java および Maven での Grunt を使用した JavaScript タスクの自動化

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences