我在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 文件不存在。
有一种方法可以为特定的依赖项指定扩展名?
答案 0 :(得分:1)
当publishMavenStyle为true时,makePom操作将生成一个POM并将其发布到存储库中。
将此行添加到您的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是运行Artifactory的主机URL和端口,repo-key是要在其中部署工件的Artifactory存储库。
答案 1 :(得分:1)
如果出于任何原因发布了一个没有pom文件的jar都是有意,则可以为您要依赖的jar指定一个explicit URL,例如
libraryDependencies += "slinky" % "slinky" % "2.1"
from "https://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar"
但是,如果您只是发布了常春藤风格的库(因此发布了ivy.xml
文件而不是pom文件),则只需为存储库指定一个正确的解析器即可,该解析器将具有{{3} }。