0

我正在尝试将我的 struts2 Web 应用程序从 guice2.0 升级到 guice3.0。我正在尝试使用 maven jetty 对其进行测试。我已成功升级我的 pom.xml 以使用 3.0 版本的正确版本和 groupId,但如果我调用 mvn jetty:run 我看到它正在尝试下载 guice-3.0-no_deps.jar

哪个会引发构建错误并且找不到中央存储库?

如果我不包含任何 guice 扩展,我不会收到此错误。

有任何想法吗?

谢谢

4

1 回答 1

1

我也将这个问题发布到了 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 依赖项。

于 2011-06-02T21:14:48.100 回答