我正在尝试将我的struts2网络应用程序从guice2.0升级到guice3.0。 我正试图用maven jetty测试它。 我已成功升级我的pom.xml以使用正确的版本和groupId用于3.0版本,但如果我调用mvn jetty:run 我看到它正在尝试下载 吉斯-3.0-no_deps.jar
会抛出构建错误,无法找到中央存储库吗?
如果我不包含任何guice扩展名,我不会收到此错误。
有什么想法吗?
由于
答案 0 :(得分:1)
我也将这个问题发布到了guice用户组。 这是我收到的答案。
guice-3.0-no_deps.jar是一个构建时工件,用于编译扩展,但在运行时不需要 - 它不在maven中心,因为Guice团队不希望人们依赖于这个“uber” -jar“错误的。扩展具有对guice-3.0-no_deps.jar的可选依赖(因此它们可以编译)但是它们对于运行时情况也具有对guice-3.0.jar的非可选依赖性。
行为良好的maven插件应该看到no_deps依赖项是可选的,如果它缺失则不会抛出构建错误,所以这听起来像是jetty插件中的错误。要解决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依赖项。