如何定义新的解析器?

Dan*_*ngs 4 sbt

我定义了几个额外的解析器,它们显示为resolvers

[clearspan]> show resolvers
[info] List(bt: http://maven.[redacted].com/artifactory/repo/, Local Maven Repository: file:///home/dan/.m2/repository, Oracle: http://download.java.net/maven/2, localMaven: file:///home/dan/.m2/repository)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时update,它只会尝试Maven Central. 知道为什么吗?

> update
[info] Updating {file:/home/dan/l/clearspan/}cs-trading-processor...
[warn]  [NOT FOUND  ] javax.resource#connector;1.0!connector.jar (44ms)
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/javax/resource/connector/1.0/connector-1.0.jar
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::              FAILED DOWNLOADS            ::
[warn]  :: ^ see resolution messages for details  ^ ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: javax.resource#connector;1.0!connector.jar
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[info] 
[warn] :: problems summary ::
[warn] :::: WARNINGS
[warn]      [NOT FOUND  ] javax.resource#connector;1.0!connector.jar (44ms)
[warn]  ==== public: tried
[warn]    http://repo1.maven.org/maven2/javax/resource/connector/1.0/connector-1.0.jar
[warn]      ::::::::::::::::::::::::::::::::::::::::::::::
[warn]      ::              FAILED DOWNLOADS            ::
[warn]      :: ^ see resolution messages for details  ^ ::
[warn]      ::::::::::::::::::::::::::::::::::::::::::::::
[warn]      :: javax.resource#connector;1.0!connector.jar
[warn]      ::::::::::::::::::::::::::::::::::::::::::::::
[info] 
[info] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
[error] {file:/home/dan/l/[redacted]/}[redacted]/*:update: sbt.ResolveException: download failed: javax.resource#connector;1.0!connector.jar
[error] Total time: 2 s, completed Sep 7, 2011 4:51:11 PM
Run Code Online (Sandbox Code Playgroud)

Jac*_*ski 5

根据文档库依赖项部分解析器

并非所有软件包都位于同一台服务器上;sbt 默认使用标准的 Maven2 存储库。如果您的依赖项不在默认存储库之一上,则必须添加一个resolver以帮助 Ivy 找到它。

您可以使用resolvers设置来做到这一点:

resolvers += name at location
Run Code Online (Sandbox Code Playgroud)

你做到了,但没有奏效。

覆盖默认解析器中,您可以阅读:

resolvers不包含默认解析器;只有由您的构建定义添加的附加项。

sbt 将解析器与一些默认存储库组合在一起形成 externalResolvers.

因此,要更改或删除默认解析器,您需要覆盖externalResolvers而不是resolvers.

在您的回答中,您说使用externalResolvers帮助,但我对此表示怀疑(抱歉)。

我认为问题在于你在哪里定义了新的resolvers. 看起来解析器来自顶级项目,而您可能一直在使用多项目构建并且resolvers没有选择设置。

我认为一个解决方案是定义resolvers一般使用in ThisBuildin [projectName]给定项目的构建设置,并projectName用正确的项目名称替换设置的值。