问题描述
|
我正在尝试将struts2网络应用程序从guice2.0升级到guice3.0。
我正在尝试使用Maven码头进行测试。
我已经成功升级了pom.xml以使用3.0版本的正确版本和groupId,但是如果我调用mvn jetty:run
我看到它正在尝试下载
guice-3.0-no_deps.jar
哪个会引发构建错误,并且找不到中央存储库?
如果我不包含任何guice扩展名,则不会收到此错误。
有任何想法吗?
谢谢
解决方法
我也将此问题发布到了guice用户组。
这是我收到的答案。
guice-3.0-no_deps.jar是用于编译扩展程序的构建时工件,但在运行时不是必需的-它不在Maven Central上,因为Guice团队不希望人们依赖误在此“超级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>
请注意,我们无法在原始build pom中执行此操作,因为在进行原始编译时我们仍然需要no_deps依赖项。