gpt4 book ai didi

Maven:为什么我得到 servlet-api-2.5

转载 作者:行者123 更新时间:2023-12-04 23:45:34 25 4
gpt4 key购买 nike

我正在使用 Maven 创建一个 Web 应用程序,但我遇到了一个问题 - 出于某种原因,我得到了包含的 servlet-api-2.5.jar,这会产生奇怪的异常。从 WAR 存档中删除此文件可以解决所有问题,但我试图首先了解为什么它在那里。我的 dependencies 在 完整的 pom.xml 文件中是:

<?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>

<groupId>org.sillyfly.webapp</groupId>
<artifactId>Webapp</artifactId>
<version>0.1</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<webXml>web/WEB-INF/web.xml</webXml>
<webappDirectory>web</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-jstlel</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

然后运行 ​​mvn dependency:tree -Dverbose 产生:

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - org.sillyfly.webapp:Webapp:jar:0.1
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] org.sillyfly.webapp:Webapp:jar:0.1
[INFO] +- org.glassfish:javax.json:jar:1.0.4:compile
[INFO] +- org.apache.taglibs:taglibs-standard-impl:jar:1.2.5:compile
[INFO] +- org.apache.taglibs:taglibs-standard-jstlel:jar:1.2.5:compile
[INFO] +- org.apache.taglibs:taglibs-standard-spec:jar:1.2.5:compile
[INFO] +- mysql:mysql-connector-java:jar:5.1.38:compile
[INFO] \- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Sat Mar 26 12:12:32 IDT 2016
[INFO] Final Memory: 24M/515M
[INFO] ------------------------------------------------------------------------

没有提及 servlet-api-2.5.jar。我现在注意到它说的是 jar 而不是 war,所以我想我的问题是双重的:1. JAR 和 WAR 依赖项是否不同?如果不同,我如何获得 Maven 依赖项插件来显示 WAR 依赖项?2. 如何明确告诉 Maven 包含servlet-api-2.5.jar?我试过在不同的地方添加排除项,但由于我不知道为什么它首先出现在那里,所以它主要是关于将排除项放在哪里的猜谜游戏,而且我尝试过的地方都没有奏效。

mvn --version 引用:

Apache Maven 2.2.1 (rdebian-23)
Java version: 1.8.0_72-internal
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "4.4.0-1-amd64" arch: "amd64" Family: "unix"

编辑:我更新到 Maven 3.3.9,我仍然得到完全相同的结果。唯一的区别是依赖树显示了各种 apache taglibs 库之间的依赖关系,但仍然没有提到 servlet-api-2.5。

最佳答案

我无法根据您提供的信息重现您的问题,因此根本原因一定在其他地方。

从命令行运行 mvn package 时,您是否看到了额外的 servlet JAR,或者这可能是您的 IDE 的奇怪效果?

如果问题仍然存在,请尝试将您的应用程序减少到最低限度并创建一个独立的项目,例如在 GitHub 上,人们可以查看。

顺便说一下,您绝不能在 WEB-INF/lib 中包含 servlet API(不能两次,一次也不能)。始终为 servlet API 使用 provided 的 Maven 作用域。

关于Maven:为什么我得到 servlet-api-2.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com