Sbt - 指定依赖扩展

Sbt - Specify dependency extension

我在使用 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文件不存在。

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

当 publishMavenStyle 为真时,POM 由 makePom 操作生成并发布到存储库。

将此行添加到您的 build.sbt

publishMavenStyle := true

配置工件分辨率

要通过 Artifactory 解决工件问题,只需将以下代码片段添加到您的 build.sbt 文件中:

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

部署工件

要将 sbt 构建工件部署到 Artifactory 中的存储库,请将以下代码片段添加到您的 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 是主机 URL 和 Artifactory 所在的端口 运行,repo-key 是您要将工件部署到的 Artifactory 存储库。

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

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

但是如果你刚刚发布了常春藤风格的库(所以发布了一个 ivy.xml 文件而不是 pom 文件),你只需要为你的存储库指定一个正确的解析器,它将有 ivy-style patterns.