您如何在Ammonite中使用本地Maven回购协议?

时间:2018-09-03 12:24:21

标签: scala maven ammonite

我正在使用炸药(http://ammonite.io/)编写Scala脚本。它允许您通过这种文本获取远程依赖项:

import $ivy.`org.scalaz::scalaz-core:7.2.7`, scalaz._, Scalaz._

但是,如何使用本地Maven存储库(例如〜/ .m2)?

3 个答案:

答案 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`

@强制将脚本分为两部分进行编译。没有它,多余的存储库将被忽略。