未定义的解析器'local'使用Typesafe激活器/ sbt publishLocal

时间:2013-12-20 17:27:08

标签: sbt typesafe-activator

我刚开始使用Scala和TypeSafe堆栈,我决定开始使用Typesafe Activator进行实验。我正在开发一个项目,旨在成为Hello World的比喻性后续项目,这将使我能够学习如何在更真实的场景中使用这些工具。

出于这个问题的目的,我的计划是创建一些简单的项目并让它们相互引用。我创建了第一个项目,并尝试使用activator / sbt命令行工具中的publishLocal命令将其发布到本地Ivy存储库。当我这样做时,我得到一个错误,指示解析器'local'未定义,请参见下文(请注意,错误输出已略微编辑;我将路径更改为xxxxx):

> publishLocal
[info] Packaging /Users/xxxxx/target/scala-2.10/recipedocs_2.10-1.0-sources.jar ...
[info] Updating {file:/Users/xxxxx/}recipedocs...
[info] Done packaging.
[info] Wrote /Users/xxxxx/target/scala-2.10/recipedocs_2.10-1.0.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] :: delivering :: recipedocs#recipedocs_2.10;1.0 :: 1.0 :: release :: Fri Dec 20 11:32:27 EST 2013
[info]  delivering ivy file to /Users/xxxxx/target/scala-2.10/ivy-1.0.xml
[info] Main Scala API documentation to /Users/xxxxx/target/scala-   2.10/api...
[info] Packaging /Users/xxxxx/target/scala-2.10/recipedocs_2.10-1.0.jar ...
[info] Done packaging.
model contains 2 documentable templates
[info] Main Scala API documentation successful.
[info] Packaging /Users/xxxxx/target/scala-2.10/recipedocs_2.10-1.0-javadoc.jar ...
[info] Done packaging.
[trace] Stack trace suppressed: run last *:publishLocal for the full output.
[error] (*:publishLocal) Undefined resolver 'local'
[error] Total time: 1 s, completed Dec 20, 2013 11:32:28 AM

第一次发生这种情况时,我在尝试发布之前已经在项目上工作了一段时间。我很确定我从来没有触及任何会破坏sbt的配置,但为了确认,我使用Typesafe Activator创建的新项目重复了这个过程,如下所示:

  1. 使用截至2013年12月1日左右的当前版本的TypeSafe Activator版本
  2. 使用基于浏览器的工具基于Hello World scala模板创建新项目。
  3. 将新项目保存到默认位置以外的某个位置
  4. 在命令行shell中(在我的情况下,终端,因为这是在Mac上完成的)cd到项目位置
  5. 启动Activator
  6. 发出publishLocal命令
  7. 请参阅与上述类似的输出。
  8. 结果,使用由激活器创建的新清洁项目,与上面显示的相同。

    我想出了一个解决方法。我在sbt.build文件中添加了以下publishTo声明:

    publishTo := Some(Resolver.defaultLocal)
    

    我已成功使用publish命令而不是publishLocal。

    但这是一个黑客攻击,因为文档表明默认情况下publishLocal应该发布到本地ivy存储库。请注意,Ivy存储库已由sbt / activator创建,因为它存储了库依赖项的缓存副本。看来,至少为了管理依赖关系,sbt / activator正在访问正确的位置;只是因为publishLocal存在问题。

    另一项可能相关或不相关的项目。再次,从从Hello World scala模板创建的激活器清理项目开始。当激活器启动时,它会警告多个旋转变压器,如下所示:

    $ ./activator
    [info] Loading project definition from /Users/xxxxx/project
    [warn] Multiple resolvers having different access mechanism configured with same name 'typesafe-ivy-releases'. To avoid conflict, Remove duplicate project resolvers (`resolvers`) or rename publishing resolver (`publishTo`). 
    

    我怀疑配置问题,但我是这个堆栈的新手。请注意,这些问题适用于Ivy,而不是Maven。我还没有和Maven一起试过。我已经看过有关sbt和本地Maven存储库的讨论,但它们似乎与我与Ivy的问题无关。

    所以,最后,问题 - 我需要做什么才能使用Typesafe Activator创建一个项目,该项目将使用activator / sbt命令行工具中的publishLocal发布到本地Ivy存储库?

    由于

1 个答案:

答案 0 :(得分:0)