【发布时间】:2019-02-08 12:16:29
【问题描述】:
我正在使用 ammonite (http://ammonite.io/) 编写 Scala 脚本。它允许您通过这种文本获取远程依赖项:
import $ivy.`org.scalaz::scalaz-core:7.2.7`, scalaz._, Scalaz._
但是,您如何使用本地 maven 存储库(例如 ~/.m2)?
【问题讨论】:
我正在使用 ammonite (http://ammonite.io/) 编写 Scala 脚本。它允许您通过这种文本获取远程依赖项:
import $ivy.`org.scalaz::scalaz-core:7.2.7`, scalaz._, Scalaz._
但是,您如何使用本地 maven 存储库(例如 ~/.m2)?
【问题讨论】:
它在 v 1.7.1 中发生了变化 现在正确的做法是这样的:
import coursierapi.MavenRepository
interp.repositories.update(
interp.repositories() ::: List(MavenRepository.of("https://some_repo"))
)
如果您希望链接本地存储库,可以将 https://some_repo 替换为 file://path_to_local_rep
感谢 github 上的 @danslapman - 这是参考讨论 https://github.com/lihaoyi/Ammonite/issues/1003
【讨论】:
非常感谢@sake92 on https://gitter.im/lihaoyi/Ammonite
#!/usr/bin/env amm
interp.repositories() ++= Seq(coursier.Cache.Dangerous.maven2Local)
@
import $ivy.`com.foo:artifact:1.3.0`
@ 强制脚本分两部分编译。没有它,额外的 repo 将被忽略。
【讨论】:
有an issue some time ago a following PR 得出的结论是,本地 Maven 存储库经常包含损坏的东西,因此默认情况下不存在。
不过,后来添加了您自己的解析器的功能,可能是这样的:
import coursier.MavenRepository
interp.repositories() ++= Seq(MavenRepository(
"~/.m2/local"
))
应该可以。
【讨论】:
import com.foo.bar.class 给出object 'foo' is not a member of com。