【问题标题】:Scala library dependencies in internal artifactory pointing outside内部工件中的 Scala 库依赖项指向外部
【发布时间】:2023-04-01 23:31:01
【问题描述】:

我们有一个内部工件服务器,我的一位同事刚刚把我想使用的 get-coursier 库放在那里。

但是,当我尝试通过 intellij 中的 sbt 安装它时,它需要的依赖项正试图从外部存储库中提取,因为我在仅内部网络上无法访问。

我使用 ~.sbt 文件夹中的存储库文件指向我们的内部工件。

我将如何为依赖项定义新路径,以便它们也可以指向内部工件服务器?

任何提示,非常感谢。

【问题讨论】:

    标签: scala intellij-idea sbt artifactory


    【解决方案1】:

    我把它加到build.sbtlike

      val yourRepoRealm = "Artifactory Realm"
      val yourRepoUrl = "http://yourhost.com/artifactory/libs-release-local"
    

    重要的是您将其添加到您需要它的模块的设置中:

      lazy val sharedSettings: Seq[Def.Setting[_]] = Seq(
        ...
        , resolvers ++= Seq(
          yourRepoRealm at yourRepoUrl
         , "jitpack" at "https://jitpack.io" // add other repos
        ), credentials += Credentials(new java.io.File(".credentials"))
        , ...
      )
    

    这需要您在project_root/.credentials 中拥有您的凭据。喜欢

    realm=Artifactory Realm
    host=yourHost.com
    user=username
    password=yourPwd
    

    【讨论】:

    • 感谢 PME。但这也能解决依赖问题吗?我当前的设置适用于初始库,因为我已将 .sbt/repositories 文件设置为指向我们的内部工件。问题不在于下载该库,而在于它的依赖库。你知道我的意思吗?
    • 我也在使用 .credentials,但在全球范围内不是特定于项目的
    • @user2160823 而不是您必须检查可以在哪些存储库中找到它们并添加这些解析器 - 我用一个例子调整了我的答案。
    • 感谢 PME。我想我在这里缺少一些基本的东西。为了使您的建议起作用,我必须去查找所有依赖项以及依赖项的依赖项,并将它们列出在该文件中。这对我来说听起来太繁重了。我怀疑有一种方法可以定义库的依赖关系,然后使用它来通知 sbt 从本地工件服务器安装它们。你可能已经猜到了,我对此很陌生。我开始认为库附带的 ivy.xml 文件可能是这里的关键!再次感谢您的回复。
    • @user2160823 只需尝试 sbt compile - 它会告诉您哪些依赖项无法解决。不仅仅是谷歌 - 也许这需要另一个解析器 - 在最坏的情况下,您必须手动下载它并将其添加到您的 Artifactory。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2021-02-05
    • 2018-03-30
    • 2013-11-05
    相关资源
    最近更新 更多