web-dev-qa-db-ja.com

Tomcatが組み込まれていないスプリングブート戦争

Tomcatをmavenで埋め込んでいないwarファイルを作成したい。ここに私のポンポンの関連部分

...
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- Add Tomcat only if I want to run directly -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-Tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
...

Mvnパッケージを実行すると、Tomcat * .jarがgiven-libフォルダーにあるが、まだlibフォルダーにあるという戦争が発生します。 build-tool-plugins-maven-packaging を読みましたが、何が悪いのかわかりません。

私の主なアイデアは、アプリケーションとして実行することであり、顧客がアプリケーションサーバーにどのように展開したいのかを知っています。

24
niels

M. Deinumからのヒントに従って、Tomcat-depedencyを除外しました。

次のpom.xml(関連スニペット)でmaven clean packageは、私が取得したくない結果を持っています。

...
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-Tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- Add Tomcat only if I want to run directly -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-Tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
...

idea-userの警告:実行構成で「指定されたスコープに依存関係を含める」を有効にする必要があります( 春を開始できません詳細については、IntelliJ Ideaの-bootアプリケーション

27
niels

それがそれを行うスプリングブート方法であるかどうかはわかりませんが、maven-war-plugin構成を使用してTomcat jarを除外できます。つまり、pom.xmlに次を追加します。

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <packagingExcludes>WEB-INF/lib/Tomcat-*.jar</packagingExcludes>
            </configuration>
        </plugin>
    </plugins>
</build>

このアプローチを使用すると、生成されたwarは実行可能ではありません(Java -jarを使用してコマンドラインで実行できません)が、サーブレットコンテナにのみデプロイできます

8
Yonatan

これと同じニーズがありましたが、前述の依存関係を削除することはできませんでした。これを追加することでWARファイルを取得できました<packaging>war</packaging>私のpomファイルへの依存。

私はこれを使用しました Spring 記事をガイドとして...共有するので、これは他の人にも役立つかもしれません。

5
Lopestt

Spring-boot-starter依存関係の変更

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

これには、組み込みTomcatサーバーが除外されます。

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-Tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
3
tadtab