Sbt-指定依赖项扩展

时间:2019-07-26 16:01:06

标签: scala maven sbt artifactory

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

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

2 个答案:

答案 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} }。