1. 序章

近年のより心温まる開発の1つは、Webアプリケーションの展開方法の継続的な簡素化です。

退屈な中間の歴史的なステップをすべてスキップして、今日に到達します。面倒なサーブレットやXMLの定型文だけでなく、ほとんどのサーバー自体も不要になります。

この記事では、 Spring Bootアプリケーションから「ファットジャー」を作成することに焦点を当てます。基本的には、デプロイと実行が簡単な単一のアーティファクトを作成します。

Bootは、すぐに使用できるコンテナーレスデプロイメントの機能を提供します。必要なのは、 pom.xml:にいくつかの構成を追加することだけです。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.4.0</version>
    </dependency>
</dependencies>

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.4.0</version>
    </plugin>
</plugins>

2. ビルドして実行

この構成により、標準の mvn cleaninstallを使用してプロジェクトを簡単にビルドできるようになりました。ここでは珍しいことではありません。

そして、次のコマンドで実行します。 java -jar –非常にシンプルで直感的。

適切なプロセス管理はこの記事の範囲を超えていますが、サーバーからログオフした場合でもプロセスを実行し続けるための簡単な方法の1つは、 nohup 指図: nohup java -jar

停止スプリングブーツプロジェクトは、単に通常のプロセスを停止することと同じです。 cntrl + c また殺す

3. ファットジャー/ファットウォー

舞台裏では、 spring-boot は、プロジェクトクラス(したがって「ファット」jar)とともに、最終的なアーティファクト内のすべてのプロジェクト依存関係をパッケージ化します。 組み込みのTomcatサーバーも組み込まれています。

したがって、結果として得られるアーティファクトは完全に自己完結型であり、標準のUnixツール(scp、sftpなど)を使用して簡単にデプロイでき、JVMを備えた任意のサーバーで実行できます。

デフォルトでは、Bootは jar ファイルを作成しますが、pom.xmlパッケージングプロパティをwarに変更すると、Mavenは代わりに当然戦争を構築する

もちろん、これはスタンドアロンとして実行可能であり、Webコンテナにデプロイされます。

4. さらなる構成

ほとんどの場合、追加の構成は必要なく、すべてが「正常に機能」しますが、特定の場合には、spring-bootにメインクラスが何であるかを明示的に伝える必要があります。 これを行う1つの方法は、プロパティを追加することです。

<properties>
    <start-class>org.baeldung.boot.Application</start-class>
</properties>

がspring-boot-starter-parentを継承していない場合は、Mavenプラグインで実行する必要があります。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.4.0</version>
    <configuration>
        <mainClass>org.baeldung.boot.Application</mainClass>
        <layout>ZIP</layout>
    </configuration>
</plugin>

まれなケースで行う必要があるもう1つのことは、Mavenにいくつかの依存関係をアンパックするように指示することです。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <requiresUnpack>
            <dependency>
                <groupId>org.jruby</groupId>
                <artifactId>jruby-complete</artifactId>
            </dependency>
        </requiresUnpack>
    </configuration>
</plugin>

5. 結論

この記事では、spring-bootによって構築された「ファット」jarを使用したサーバーレスデプロイメントについて説明しました。

いつものように、この記事のコードはすべてGithub利用できます。