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.
我在使用 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.