HerokuにデプロイするだけではSpring MVCは動かない。
Node.jsのノリでぽちっとなでいけるかなー。いけないだろうなー。と思っていたら案の定無理でした。
調べるとどうもビルド方式を変更して、一枚噛ましてwarを実行するような仕組みになるそうです。
解決方法
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.github.jsimone</groupId>
<artifactId>webapp-runner</artifactId>
<version>9.0.19.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
上記の内容をpom.xmlのbuildタグ、pluginsタグの配下に追記します。
Webapp RunnerはHerokuの中の人が作った内部的にTomcatを起動するだけのランチャーアプリケーションらしいです。
web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war
上記の内容の「Procfiile」ファイルを作成し、プロジェクト直下に配置します。
「Procfiile」ファイルは起動時にアプリによって実行されるコマンドを指定するファイルです。
なので、上記の「Procfiile」ファイルの内容は起動時にwebapp-runner.jar動かして、作ったwarを実行してよ。という指示になりますね。
やっぱりローカルじゃなくてWEBサービスとして公開されると感慨深い物がありますよね。
参考
https://qiita.com/kawaty/items/93f7cc74a8abae611cef
https://web.plus-idea.net/2019/01/heroku-eclipse-tomcat-web-maven/
https://codezine.jp/article/detail/8187
https://devcenter.heroku.com/articles/procfile
コメント