2

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

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

但是,您如何使用本地 maven 存储库(例如 ~/.m2)?

4

3 回答 3

4

它在 v 1.7.1 中发生了变化现在正确的方法是这样的:

import coursierapi.MavenRepository

interp.repositories.update(
  interp.repositories() ::: List(MavenRepository.of("https://some_repo"))
)

如果您希望链接本地存储库,则可以替换https://some_repofile://path_to_local_rep

感谢 github 上的@danslapman - 这是参考讨论https://github.com/lihaoyi/Ammonite/issues/1003

于 2020-03-10T12:47:39.823 回答
2

非常感谢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`

@ 强制脚本分两部分编译。没有它,额外的回购将被忽略。

于 2018-09-03T17:12:04.740 回答
1

前段时间有一个问题, 以下PR得出的结论是本地 Maven 存储库经常包含损坏的东西,因此默认情况下不存在。

但是,后来添加了添加您自己的解析器的功能,可能类似于:

import coursier.MavenRepository

interp.repositories() ++= Seq(MavenRepository(
  "~/.m2/local"
))

应该管用。

于 2018-09-03T13:40:23.687 回答