2011-05-31 35 views
0

我試圖將我的struts2 web應用程序從guice2.0升級到guice3.0。 我試圖用maven碼頭測試它。 我已經成功升級我的pom.xml使用了3.0版本的正確版本的groupId,但如果我叫命令mvn碼頭:運行 我看到它正試圖下載 吉斯-3.0-no_deps.jar從maven中央資源庫下載guice3.0工件

它會引發構建錯誤,並且無法找到中央存儲庫?

如果我不包含任何guice擴展名,我不會收到此錯誤。

任何想法?

謝謝

+1

如果您提供一個最小pom文件來重現錯誤,將會有所幫助。 – Heri 2011-06-01 23:27:15

回答

1

我把這個問題也發給了guice用戶組。 這是我收到的答案。

guice-3.0-no_deps.jar是一個用於編譯擴展的構建時工件,但在運行時不需要 - 它不在maven中心,因爲Guice團隊不希望人們依賴於這個「超級罐子「。這些擴展對guice-3.0-no_deps.jar具有可選的依賴關係(因此它們可以編譯),但它們對於運行時情況下的guice-3.0.jar也具有非可選的依賴關係。

行爲正常的maven插件應該會看到no_deps依賴項是可選的,如果缺少則不會拋出構建錯誤,所以這聽起來像是jetty插件中的一個錯誤。要解決此碼頭錯誤,你可以明確地掩蓋這種依賴關係如下:

<dependency> 
     <groupId>com.google.inject.extensions</groupId> 
     <artifactId>guice-struts2</artifactId> 
     <version>3.0</version> 
     <exclusions> 
      <exclusion> 
       <groupId>com.google.inject</groupId> 
       <artifactId>guice</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.google.inject</groupId> 
     <artifactId>guice</artifactId> 
     <version>3.0</version> 
    </dependency> 

請注意,我們不能做到這一點在原構建POM,因爲我們做的原編譯時仍然需要no_deps依賴。

相關問題