【问题标题】:How do you use a local maven repo with Ammonite?您如何将本地 maven repo 与 Ammonite 一起使用?
【发布时间】:2019-02-08 12:16:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: scala maven ammonite


    【解决方案1】:

    它在 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

    【讨论】:

      【解决方案2】:

      非常感谢@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 将被忽略。

      【讨论】:

      • @ 为我修复了它!谢谢!
      【解决方案3】:

      an issue some time ago a following PR 得出的结论是,本地 Maven 存储库经常包含损坏的东西,因此默认情况下不存在。

      不过,后来添加了您自己的解析器的功能,可能是这样的:

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

      应该可以。

      【讨论】:

      • 无法让它工作。试过“~/.m2”、“~/.m2/local”、“~/.m2/repository”。 (最后一个是我的 Macbook 上的路径。)import com.foo.bar.class 给出object 'foo' is not a member of com
      猜你喜欢
      • 2020-02-24
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 2021-10-21
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多