我创建了一个基于Maven的spring引导项目来探索如何使其在Websphere Application Server上运行。这是我需要排除spring-boot-starter-web的嵌入式Tomcat的方法。
我试过以下几件事:
为spring-boot-starter-tomcat添加了一个新的依赖项,其作用域为:provided(请参见在部署到JBOSS[spring-boot])时从war文件中删除嵌入式tomcat服务器),后跟mvn clean更新。
使用spring-boot-starter-web依赖项中的exclusions-tag排除spring-boot-starter-tomcat(请参阅https://maven.apache.org/guides/introduction/introduction-to-optional-and-exclusts-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>
这是mvn dependency:tree的输出:
https://imgur.com/a/vukyclm(很抱歉我不知道如何在这里上传图片。)
我希望Tomcat从我的maven依赖项中删除。
提前道谢。
当我构建它时,运行您发布的排除示例运行良好。
<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:
在添加了排除项后,您是否进行了mvn清洁安装?
我有一个编译和运行时所需的依赖项,但我想在运行测试时将其排除。这可能吗?也许,通过设置个人资料?但是,如何仅在生命周期阶段停用它?
问题内容: 我有一个项目,该项目依赖于由供应商控制的工件。该工件包含一些我依赖的类,其中一些类较旧并且会引起问题。有没有办法让Maven自动扩展jar,删除类并将它们重新打包为依赖项?我会举一个例子。 所以- 我需要使用在项目网站,但我需要使用从神器。我无法修改Supplier:artifact或us:dependency。 有任何想法吗?! 问题答案: 从版本2.0.9开始,maven保留了类路
例如,我有依赖性:
我使用以下基本Maven命令生成了一个项目: 该项目是正确创建的,我可以测试自动生成的App类,而没有任何问题的说明: 稍后,我向POM添加了一些依赖项,获得了以下文件: 最后,为了测试起见,我修改了之前由Maven自己生成的App类: 一系列奇怪的事情发生了: > 即使在POM中指定了较新版本的依赖项,但在.m2文件夹中,下载的版本似乎较旧(例如,commons-lang3的版本为2.1和2.5
主要内容:排除依赖,可选依赖,排除依赖 VS 可选依赖 我们知道 Maven 依赖具有传递性,例如 A 依赖于 B,B 依赖于 C,在不考虑依赖范围等因素的情况下,Maven 会根据依赖传递机制,将间接依赖 C 引入到 A 中。但如果 A 出于某种原因,希望将间接依赖 C 排除,那该怎么办呢?Maven 为用户提供了两种解决方式:排除依赖(Dependency Exclusions)和可选依赖(Optional Dependencies)。 排除依赖
我在Jetty上使用Spring Boot,似乎我不能在Gradle构建文件中排除所有的Tomcat依赖项。 build.gradle的相关部分: 然而,当我运行时,Tomcat的一部分仍然存在,并导致WebSocket出现问题: 为什么< code > spring-boot-starter-Tomcat 没有被排除在< code > spring-boot-starter-web 之外?