我刚开始使用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创建的新项目重复了这个过程,如下所示:
结果,使用由激活器创建的新清洁项目,与上面显示的相同。
我想出了一个解决方法。我在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存储库?
由于
答案 0 :(得分:0)
已在Activator 1.0.10中修复此问题:http://downloads.typesafe.com/typesafe-activator/1.0.10/typesafe-activator-1.0.10.zip