【发布时间】:2013-12-18 22:34:43
【问题描述】:
我正在通过 Play 框架使用 SBT,但我在 build.sbt 文件中遇到了管理依赖项的问题。
我的 build.sbt 文件:
name := "name"
version := "1.0-SNAPSHOT"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
"de.undercouch" % "bson4jackson" % "2.1.0" force(),
"com.fasterxml.jackson.core" % "jackson-databind" % "2.1.0" force(),
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.1.0" force(),
"com.fasterxml.jackson.core" % "jackson-core" % "2.1.0" force(),
"org.mongodb" % "mongo-java-driver" % "2.11.3",
"org.jongo" % "jongo" % "0.4",
"uk.co.panaxiom" %% "play-jongo" % "0.6.0-jongo0.4",
"org.glassfish.jersey.core" % "jersey-client" % "2.4",
"org.glassfish.jersey.core" % "jersey-common" % "2.4",
"org.glassfish.jersey.core" % "jersey-server" % "2.4",
"org.glassfish.jersey.containers" % "jersey-container-jdk-http" % "2.4"
)
play.Project.playJavaSettings
当我尝试在我的生产环境 (Ubuntu) 上构建时,我收到以下错误: M[2K[0m[[0minfo[0m] [0mResolving org.glassfish.jersey.core#jersey-client;2.4 ...[0m
M[2K[0m[[0minfo[0m] [0mResolving org.glassfish.jersey.core#jersey-common;2.4 ...[0m
M[2K[0m[[0minfo[0m] [0mResolving javax.ws.rs#javax.ws.rs-api;2.0 ...[0m
M[2K[0m[[0minfo[0m] [0mResolving javax.annotation#javax.annotation-api;1.2 ...[0m
M[2K[0m[[0minfo[0m] [0mResolving org.glassfish.hk2#hk2-api;2.2.0-b21 ...[0m
M[2K[0m[[0minfo[0m] [0mResolving org.glassfish.hk2#hk2-utils;2.4 ...[0m
[0m[[33mwarn[0m] [0m module not found: org.glassfish.hk2#hk2-utils;2.4[0m
[0m[[33mwarn[0m] [0m==== local: tried[0m
[0m[[33mwarn[0m] [0m /opt/play/repository/local/org.glassfish.hk2/hk2-utils/2.4/ivys/ivy.xml[0m
[0m[[33mwarn[0m] [0m==== Maven2 Local: tried[0m
[0m[[33mwarn[0m] [0m file:/root/.m2/repository/org/glassfish/hk2/hk2-utils/2.4/hk2-utils-2.4.pom[0m
有趣的是,这个构建在我的开发环境中没有问题(也是 Ubuntu,我相信运行与生产环境中使用的所有内容相同的版本。)
似乎问题在于 sbt 试图检索不存在的 hk2-utils 2.4 版。我追踪到了 hk2-api 包,它的 POM 文件中包含以下内容:
<dependency>
<groupId>org.glassfish.hk2</groupId>
<artifactId>hk2-utils</artifactId>
<version>${project.version}</version>
</dependency>
我相信正在发生的事情是 ${project.version} 在我的生产环境中设置为 2.4(这是此依赖关系树根部的 jersey-client 的版本号),而不是使用它的版本号前任。 org.glassfish.hk2#hk2-api;2.2.0-b21。
我想知道这是 sbt 的错误,我的 sbt 配置的错误,还是什么。我还想知道是否有任何方法可以通过配置选项或以某种方式更改 hk2-api 的 POM 来修复它。
【问题讨论】:
-
您使用的是哪个版本的 sbt 和 Play?在 sbt 项目 sbt/sbt#647 上报告了一个类似的问题,我只是花了一些时间尝试重现它,但我无法使用 sbt 0.13.0。
-
我正在使用带有 sbt 0.13.0 的 Play 2.2.0
-
嗨 Eugene,我刚刚在 sbt 0.13.5 中遇到了同样的错误。似乎是导致问题的 jersey-client 版本。如果我使用 "org.glassfish.jersey.core" % "jersey-client" % "2.11" 那么我会遇到问题,但如果我将它撞到 "org.glassfish.jersey.core" % "jersey-client" % " 2.12" 然后它工作正常。