2014-02-12 56 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

很高興它解決了你的問題:) –