【问题标题】:How to add JFROG artifactory to the sbt.build file?如何将 JFROG 工件添加到 sbt.build 文件?
【发布时间】:2020-04-16 13:32:14
【问题描述】:

我正在使用sbt 1.3.9,我需要通过授权解决来自Jfrog artifactory 的依赖关系。我有以下 sbt.build 文件:

scalaVersion := "2.13.1"
javacOptions ++= Seq("-source", "11", "-target", "11")
resolvers ++= Seq(
  Resolver.ssh("my-repo", "https://artifactory.myrepo") as("usr", "password")
)
credentials += Credentials("my-repo", "https://artifactory.myrepo", "usr", "password")
libraryDependencies ++= Seq(
  guice,
  ...
)

当我尝试构建我的应用程序时,出现以下异常:

Not found
not found: /Users/john/.ivy2/local/com.examples/mylib/0.0.1-SNAPSHOT/ivys/ivy.xml
not found: https://repo1.maven.org/maven2/com/examples/mylib/0.0.1-SNAPSHOT/mylib-0.0.1-SNAPSHOT.pom
(ssExtractDependencies) sbt.librarymanagement.ResolveException: Error downloading com.examples:mylib:0.0.1-SNAPSHOT
Not found
Not found
not found: /Users/john/.ivy2/local/com.examples/mylib/0.0.1-SNAPSHOT/ivys/ivy.xml
not found: https://repo1.maven.org/maven2/com/examples/mylib/0.0.1-SNAPSHOT/mylib-0.0.1-SNAPSHOT.pom
Total time: 3 s, completed Apr 16, 2020, 3:02:27 PM

我该如何解决这个问题?

【问题讨论】:

    标签: java scala playframework sbt


    【解决方案1】:

    如果您想从私有工件下载 jars,您必须指定要搜索的存储库和凭据:

    resolvers ++= Seq(
      "Artifactory snapshots".at("http://X.X.X.X/artifactory/sbt-dev-local/"),
      "Artifactory releases".at("http://X.X.X.X/artifactory/sbt-release-local/"),
      "Artifactory maven releases".at(
        "http://X.X.X.X/artifactory/mvn-local-release/"
      )
    )
    credentials += Credentials(
      "Artifactory Realm",
      "X.X.X.X",
      "yourlogin",
      "yourpassword"
    )
    

    如果你想发布到 JFROG artifactory repo,你必须指定凭据和publishTo 值:

    credentials += Credentials(
      "Artifactory Realm",
      "X.X.X.X",
      "yourlogin",
      "yourpassword"
    )
    publishTo := {
      if (isSnapshot.value)
        Some(
          "Artifactory Realm".at(
            "http://X.X.X.X/artifactory/sbt-dev-local;build.timestamp=" + new java.util.Date().getTime
          )
        )
      else
        Some("Artifactory Realm".at("http://X.X.X.X/artifactory/sbt-release-local"))
    }
    

    在我的例子中,X.X.X.X 是 IP 地址。您应该将它们替换为真实的 IP 地址或域

    【讨论】:

    • 感谢您的帮助!我花了半天的时间找出如何解决这个问题。
    猜你喜欢
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多