从maven中央存储库下载guice 3.0工件

时间:2011-05-31 22:21:37

标签: maven struts2 guice maven-jetty-plugin guice-3

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

会抛出构建错误,无法找到中央存储库吗?

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

有什么想法吗?

由于

1 个答案:

答案 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依赖项。