如何定义新的解析器?

时间:2011-09-07 20:55:07

标签: 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)

但是,当我运行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

2 个答案:

答案 0 :(得分:3)

根据文档Library dependencies部分Resolvers

  

并非所有包都存在于同一台服务器上; sbt使用标准的Maven2   存储库默认情况下如果您的依赖项不是默认值之一   存储库,你必须添加resolver来帮助常春藤找到它。

您可以使用resolvers设置执行此操作:

resolvers += name at location

你做到了,但没有用。

Overriding default resolvers中,您可以阅读:

  

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

     

sbt将解析器与一些默认存储库结合起来形成   externalResolvers

     

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

在你的回答中你说使用externalResolvers有帮助,但我怀疑(抱歉)。

我认为问题出在您定义新resolvers的位置。解决方案似乎来自顶级项目,而您可能一直在使用多项目构建,并且resolvers设置未被提取。

我认为解决方案是使用resolversin ThisBuild为给定项目定义构建的in [projectName]设置,其中projectName替换为正确的项目名称设置的值应设置为。

答案 1 :(得分:0)

我本应该设置externalResolvers