【问题标题】:Sbt - Specify dependency extensionSbt - 指定依赖扩展
【发布时间】:2019-12-05 00:05:09
【问题描述】:

我在使用 Sbt 时遇到了麻烦。 在我的 JFrog Artifactory 本地实例中,我发布了一个没有 .pom 文件的 java 库,所以我只有 .jar 文件。

配置:

//build.sbt 
libraryDependencies += "com.example" % "my-library" % "1.0" % "provided"


//build.properties
sbt.version = 1.3.0-RC2

不知不觉我已经正确配置了解析器。


Sbt 失败并出现以下错误:

not found: http://[Artifactory]/artifactory/maven/com/example/my-library/1.0/my-library-1.0.pom

错误很明显,确实.pom文件不存在。

有一种方法可以为特定的依赖项指定扩展名?

【问题讨论】:

    标签: scala maven sbt artifactory


    【解决方案1】:

    如果出于某种原因您发布了没有 pom 文件的 jar故意,您可以为要依赖的 jar 指定 explicit URL,例如

    libraryDependencies += "slinky" % "slinky" % "2.1" 
      from "https://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar"
    

    但是,如果您刚刚发布了 ivy 样式的库(因此发布了 ivy.xml 文件而不是 pom 文件),您只需为您的存储库指定正确的解析器,它将具有 ivy-style patterns

    【讨论】:

      【解决方案2】:

      当 publishMavenStyle 为 true 时,makePom 操作会生成一个 POM 并发布到存储库。

      将此行添加到您的build.sbt

      publishMavenStyle := true
      

      配置工件分辨率

      要通过 Artifactory 解析工件,只需将以下代码 sn-p 添加到您的 build.sbt 文件中:

      resolvers += "Artifactory" at "http://<host>:<port>/artifactory/<repo-key>/"
      

      部署工件

      要将 sbt 构建工件部署到 Artifactory 中的存储库,请将以下代码 sn-ps 添加到您的 build.sbt 文件中。

      对于版本,添加:

      publishTo := Some("Artifactory Realm" at "http://<host>:<port>/artifactory/<repo-key>")
      credentials += Credentials("Artifactory Realm", "<host>", "<USERNAME>", "<PASS>")
      

      对于快照,添加:

      publishTo := Some("Artifactory Realm" at "http://<host>:<port>/artifactory/<repo-key>;build.timestamp=" + new java.util.Date().getTime)
      credentials += Credentials("Artifactory Realm", "<host>", "<USERNAME>", "<PASS>")
      

      其中 host 和 port 是运行 Artifactory 的主机 URL 和端口,repo-key 是您要部署工件的 Artifactory 存储库。

      【讨论】:

        猜你喜欢
        • 2012-09-22
        • 1970-01-01
        • 2015-09-13
        • 2017-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 2013-08-26
        相关资源
        最近更新 更多