我正在尝试将我的 struts2 Web 应用程序从 guice2.0 升级到 guice3.0。我正在尝试使用 maven jetty 对其进行测试。我已成功升级我的 pom.xml 以使用 3.0 版本的正确版本和 groupId,但如果我调用 mvn jetty:run 我看到它正在尝试下载 guice-3.0-no_deps.jar
哪个会引发构建错误并且找不到中央存储库?
如果我不包含任何 guice 扩展,我不会收到此错误。
有任何想法吗?
谢谢
我正在尝试将我的 struts2 Web 应用程序从 guice2.0 升级到 guice3.0。我正在尝试使用 maven jetty 对其进行测试。我已成功升级我的 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 团队不希望人们依赖这个“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 依赖项。