HerokuでSpring MVCを動かす方法

システム開発Tips

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

フォローお願いします!

コメント

タイトルとURLをコピーしました