Playframework 2.1缓慢解决内部依赖关系

时间:2014-05-07 14:26:52

标签: playframework-2.0 dependencies sbt resolve

我们正在使用内部声纳类型存储库来处理我们自己的游戏项目所依赖的库。最近该项目开始大约需要10分钟(使用播放),因为解决速度很慢。

试着看看我发生了什么{我正在运行ngrep port 80。我从类型安全的存储库中看到很多缓慢的响应,它们回答我们自己的库不在他们的仓库中。

示例:

T <my-internal-ip>:41907 -> 54.236.91.228:80 [AP]
  HEAD /typesafe/snapshots/<our-pom-file-here> HT
  TP/1.1..User-Agent: Apache Ivy/2.3.0-rc1..Host: repo.typesafe.com..Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2..Connection: keep-alive....                                         
#########
T 54.236.91.228:80 -> <my-iternal-ip>:41907 [AP]
  HTTP/1.1 404 Not Found..Content-Type: application/json;charset=ISO-8859-1..Date: Wed, 07 May 2014 
  14:10:32 GMT..Server: Artifactory/3.2.0..X-Artifactory-Id: typesafe2-use-1e-typesafereadonly..Connection: keep-alive.... 

所以我希望sbt首先搜索我们自己的存储库,它现在似乎正在做什么。我们在Build.scala中添加了我们的存储库,如:

val main = play.Project(appName, appVersion, appDependencies)
[...]
.settings(
  [...]
  resolvers += "nexus" at "<URL>",
  [...]

在尝试使用typesafe之前,如何告诉sbt搜索我们的本地回购?

2 个答案:

答案 0 :(得分:1)

您必须覆盖resolvers。目前,您在Type Safe的解析器后附加了您的存储库。您可以键入show resolvers以显示当前声明的解析器列表。

如果您希望存储库在typesafe之前出现,则必须替换当前列表。对于较旧的SBT版本,+=(SBT 0.13.x或更新版)或:=覆盖~=代替密钥。

播放2.1.x(SBT 0.12.x)

resolvers ~= ( resolvers => ("My Company Releases" at "http://mycompany.com/releases") +: resolvers)

播放2.2.x(SBT 0.13或更高版本)

resolvers := ("My Company Releases" at "http://mycompany.com/releases") +: resolvers.value

这不会覆盖所有解析器。还有externalResolvers,可以覆盖described in the documentation

答案 1 :(得分:0)

您可以使用路由规则来排除类型安全仓库被内部组件命中。系统实际上附带了一些示例org.company | com.company这个确切案例的例子。 http://books.sonatype.com/nexus-book/reference/confignx-sect-managing-routes.html

此外,如果您使用的是组存储库,则可以将本地存储库置于所有外部存储库之上,因为要解决的成本要低得多。在某些情况下,路由仍然有用,因此对于内部组件,您应该同时执行这两种操作。