Tomcat的Maven依赖排除不起作用

时间:2019-07-02 12:06:52

标签: java spring maven spring-boot tomcat

我创建了一个基于Maven的spring-boot-project,以探索如何使其在Websphere Application Server上运行。 这是我需要排除spring-boot-starter-web的嵌入式Tomcat的方式。

我尝试了以下操作:

为spring-boot-starter-tomcat添加了一个新的依赖项,其范围为:提供(请参阅Removing embedded tomcat server from war file when deploying to JBOSS [Spring-Boot]),然后进行mvn干净更新。

使用spring-boot-starter-web依赖项中的exclusions-tag排除spring-boot-starter-tomcat(请参阅https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html),然后进行mvn干净更新。

这些都不是。

这是我的“本地” POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.6.RELEASE</version>
      <relativePath/>
    </parent>
    <packaging>war</packaging>
    <properties>
      <java.version>1.8</java.version>
    </properties>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      ...
    </dependencies>
    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
      </plugins>
    </build>
</project>

这是我对显式Tomcat的依赖(范围:提供):

<project ...>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
      </dependency>
    </dependencies>
</project>

这是我对排除对象的依赖:

<project ...>
    <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>
    </dependencies>
</project>

这是mvndependency:tree的输出:

https://imgur.com/a/VUkYCLm (很抱歉,我不知道如何在此处上传图片。)

我希望从我的maven依赖项中删除Tomcat。

谢谢。

1 个答案:

答案 0 :(得分:0)

运行您发布的排除示例在我构建它时运行良好。

<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>
    </dependencies>

添加此排除项后,我也进行了mvn全新安装,并且我的依赖项树也不再包含tomcat jar了:

Screenshot of dependency tree

添加排除项后,您是否进行过干净安装?