我正在使用炸药(http://ammonite.io/)编写Scala脚本。它允许您通过这种文本获取远程依赖项:
import $ivy.`org.scalaz::scalaz-core:7.2.7`, scalaz._, Scalaz._
但是,如何使用本地Maven存储库(例如〜/ .m2)?
答案 0 :(得分:3)
在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
答案 1 :(得分:1)
有an issue some time ago a following PR得出的结论是,本地Maven存储库经常包含损坏的内容,因此默认情况下不存在。
但是,后来添加了添加自己的解析器的功能,可能是这样的:
import coursier.MavenRepository
interp.repositories() ++= Seq(MavenRepository(
"~/.m2/local"
))
应该工作。
答案 2 :(得分:1)
非常感谢https://gitter.im/lihaoyi/Ammonite上的@ sake92
#!/usr/bin/env amm
interp.repositories() ++= Seq(coursier.Cache.Dangerous.maven2Local)
@
import $ivy.`com.foo:artifact:1.3.0`
@强制将脚本分为两部分进行编译。没有它,多余的存储库将被忽略。