Spring Bootでファットジャーアプリを作成する

1前書き

近年の心温まる開発の1つは、Webアプリケーションのデプロイ方法の継続的な単純化です。

面倒な中間の歴史的なステップをすべてスキップして、私達は今日到達します - 面倒なサーブレットとXMLボイラープレートだけでなく、ほとんどサーバー自体を省くことができるとき。

Bootは、箱から出してすぐにコンテナを使用しない展開のための機能を提供します。

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

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

2ビルドして実行する

この設定により、標準の mvn clean install を使ってプロジェクトを簡単にビルドできます。

そして、それを次のコマンドで実行します。

適切なプロセス管理はこの記事の範囲を超えていますが、サーバーからログオフしてもプロセスを実行し続けるための簡単な方法の1つは、 nohup コマンドを使用することです。 nohup java -jar <artifact-name> .

spring-boot プロジェクトを停止しても、単に cntrl c または kill <pid> . のどちらであっても、通常のプロセスを停止することと同じです。

** 3ファットジャー/ファットウォー+

**

舞台裏では、 spring-boot は、プロジェクトクラスの側に沿って最終成果物内のすべてのプロジェクト依存関係をパッケージ化します(したがって「太った」jar)。組み込みTomcatサーバーも組み込まれています。

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

デフォルトでは、Bootは jar ファイルを作成します - しかし、 pom.xml packaging プロパティを 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.0.1.RELEASE</version>
    <configuration>
        <mainClass>org.baeldung.boot.Application</mainClass>
        <layout>ZIP</layout>
    </configuration>
</plugin>

いくつかのまれなケースであなたがする必要があるかもしれないもう一つのことは__いくつかの依存関係をアンパックするように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を使用したサーバーなしの展開について調べました。

いつものように、この記事のコードはすべて入手可能ですhttps://github.com/eugenp/tutorials/tree/master/spring-boot-ops

前の投稿:Travis CIでビルドパイプラインを作成する
次の投稿:JavaでのPDF変換