Spring BootのWebアプリをherokuで動かす
- 最近、herokuで個人プロジェクトのWebアプリを作って遊んでます。
- 今回は、その中でSpring Bootの形式で作ったWebアプリを動かすときにやったことを記録したので、メモ代わりにここに挙げておきます。
参考
Heroku公式解説「Deploying Spring Boot Applications to Heroku」
Deploying Spring Boot Applications to Heroku | Heroku Dev Center
書籍
はじめてのSpring Boot―「Spring Framework」で簡単Javaアプリ開発 (I・O BOOKS)
- 作者: 槇俊明
- 出版社/メーカー: 工学社
- 発売日: 2014/11
- メディア: 単行本
- この商品を含むブログ (8件) を見る
spring-boot-maven-plugin
Spring Boot Maven Plugin – Usage
- herokuのjava開発では、デフォルトではMavenを使ってビルドします。
ここでは、Mavenのプラグイン「spring-boot-maven-plugin」を利用して、herokuのProfileファイルに指定する実行可能なjarファイルを作成します。
下記の設定を追加することで、dependencyに指定したjarを含む実行可能なjarを作成してくれます。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
Profile
- 作成した実行可能なjarファイルの実行コマンドを記述します。
web: java -Dserver.port=$PORT -jar target/〜.jar
[注意]ローカルのjarファイルを利用する場合
セントラルリポジトリにないjarファイル(社内開発など)を利用する場合は、systemスコープではなくローカルリポジトリを利用します。 systemスコープのjarはspring-boot-maven-pluginで収集してもらえません。
ローカルのjarを配置したローカルリポジトリを作成し、それをpom.xmlにて指定してビルドすることで、spring-boot-maven-pluginがビルド時に実行可能なjarに含めてくれます。
Adding Unmanaged Dependencies to a Maven Project | Heroku Dev Center
プロジェクトルートにrepoディレクトリを作成します。
以下のMavenコマンドを実行します。
mvn deploy:deploy-file -Durl=file:///%プロジェクトルートのパス%/repo -Dfile=%ローカルのjarファイルへのパス% -DgroupId=%GROUP_ID% -DartifactId=%ARTIFACT_ID%-Dpackaging=jar -Dversion=%VERSION%
- pom.xmlにrepoディレクトリを指定します。
<repositories> <!--other repositories if any--> <repository> <id>project.local</id> <name>project</name> <releases> <checksumPolicy>ignore</checksumPolicy> </releases> <url>file:${project.basedir}/repo</url> </repository> </repositories>