2014-02-12 33 views
1

零,我试图将的javax.servlet-API项目添加到我的Maven的Java项目(见this link有关版本的这种依赖性的详细信息)。我想将版本3.1.0添加到我的项目中。所以很自然,我想补充这依赖于我的pom.xml文件:Maven的自动删除尾随依赖版本(的javax.servlet-API)

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

然而,当Maven尝试下载JAR/POM文件这件神器,它得到一个错误,因为它会自动转换版本3.1.03.1,这不是其实际的版本,它找不到中央Maven回购该版本的神器:

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?),但笔者的解决方案是使用servlet的API,这是我没有做利益<scope>provided</scope>依赖监守我想避免需要使用提供范围。

回答

4

它得到一个错误,因为它会自动转换版本3.1.0到3.1

这是不可能办到的事。 Maven永远不会转换版本号(除了快照)。无论版本是否存在,它都会下载您在pom.xml中指定的版本。您可以通过写在标签的版本面积伪造的数字测试这一点,然后火mvn install命令,你会看到,它会尝试下载该版本,然后失败。

要调试您的问题,首先请确认您有在POM正确的行家进入

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

其次,我建议你删除的文件夹~/.m2/repository/javax/servlet/,以消除任何不良罐子,从而迫使行家重新-download所有的javax.servlet罐子

+0

删除'〜/ .m2目录/库/使用javax/servlet的/'并重新运行'MVN清洁install'似乎这样的伎俩。它能够下载javax.servlet的“3.1.0”版本。感谢您的帮助。 – ecbrodie

+0

很高兴它解决了你的问题:) –