java - Maven 自动删除依赖版本中的尾随零 (javax.servlet-api)

标签 java maven servlets dependencies servlet-3.0

我正在尝试将 javax.servlet-api 项目添加到我的 Maven Java 项目中(有关此依赖项的版本的更多信息,请参阅 this link)。我想将版本 3.1.0 添加到我的项目中。所以很自然地,我将此依赖项添加到我的 pom.xml 文件中:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

但是,当 Maven 尝试下载此 Artifact 的 jar/pom 文件时,它会出错,因为它会自动将版本 3.1.0 转换为 3.1,即不是它的实际版本,并且它无法在中央 Maven 存储库中找到该版本的 Artifact :

Downloading: http://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1/javax.servlet-api-3.1.pom
[WARNING] The POM for javax.servlet:javax.servlet-api:jar:3.1 is missing, no dependency information available
Downloading: http://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/3.1/javax.servlet-api-3.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
...
[ERROR] Failed to execute goal on project my-java-project: Could not resolve dependencies for project com.example.myproject:my-project:war:1.0-SNAPSHOT: Could not find artifact javax.servlet:javax.servlet-api:jar:3.1 in central (http://repo.maven.apache.org/maven2) -> [Help 1]

有谁知道我如何告诉 Maven 不要删除 pom.xml 文件中依赖项的版本标记中的尾随零?任何其他已知的解决方法?

注意:我确实查看了这篇 SOF 帖子 ( Maven dependency for Servlet 3.0 API? ),但作者的解决方案是使用 <scope>provided</scope> servlet-api 的依赖项,我没有兴趣这样做,因为我想避免需要使用提供的范围。

最佳答案

it gets an error because it automatically converts version 3.1.0 to 3.1

那是不可能的事情。 Maven 永远不会转换版本号(快照除外)。它将始终下载您在 pom.xml 中指定的版本,无论该版本是否实际存在。您可以通过在标签的版本区域写入一个伪造的数字来测试这一点,然后触发 mvn install 命令,您会看到它将尝试下载该版本然后失败。

要调试你的问题,首先验证你在 pom 中有正确的 maven 条目

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

其次,我建议您删除文件夹 ~/.m2/repository/javax/servlet/ 以删除任何坏的 jar,从而强制 maven 重新下载所有 javax.servlet jar

关于java - Maven 自动删除依赖版本中的尾随零 (javax.servlet-api),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719214/

相关文章:

java - 加载图像,因为它们是可见的 Android

java - 没有 MathLab 的 Java 中的 Gabor 图像处理

java - org.osgi.framework.BundleException : Unable to resolve: missing requirement: osgi. wiring.package; (osgi.wiring.package=org.json)

java - 将 slf4j 与 log4j 结合使用。在 tomcat 中部署时未在文件中创建日志

java - 如何跳过所有集成测试 (-DskipITs) 和一个单元测试 mvn 命令行

java - 如何在 OData 响应 Olingo 中设置 cookie?

java - 通过 ID 存储数学问题和关键字之间的映射

java - 为什么参数值是对象哈希码 `request.getParameterMap().get(name)`

java - Excel 正在将第 15 位之后的数字更改为 "0"。请建议在相同情况下该怎么做

java - WAR 文件的启动 Servlet