如何将jar发布到本地存储库?

时间:2011-10-17 19:50:19

标签: sbt

我有一个编译为jar的库(不是sbt项目,没有源代码,只是jar文件),这在存储库中是不可用的。

有没有办法在本地发布jar,所以我可以使用libraryDependencies += "org.xxx" % "xxx" % "1.0"表示法添加依赖项? (我已经知道如何通过将文件复制到lib文件夹来将文件添加到项目中。)

5 个答案:

答案 0 :(得分:53)

** publishLocal **操作用于将项目发布到本地Ivy存储库。默认情况下,此本地存储库位于$ {user.home} / .vy2 / local中。然后,您可以在同一台计算机source

上的其他项目中使用此项目 编辑:对不起,我误解了你的问题。这是一个example,用于向您当地的常春藤回购发布一个或多个来源。

答案 1 :(得分:31)

tl; dr 我称之为技巧而不是sbt的功能。你已被警告过了。

我们说你已经file.jar发布了。与任何构建工具一样,sbt包括,它执行最终创建工件的任务 - 大多数情况下是一个jar文件 - 来自项目中的文件。

项目为工件设置坐标

诀窍是利用sbt所需的设置环境(= 坐标)来发布jar(否则你必须在命令行上指定它们可能是非常用户友好的。)

使用必要的设置创建build.sbt - organizationnameversion以及可能scalaVersion - 并将其保存在jar文件所在的位置。< / p>

organization := "org.abc"

name := "my-own-publish-jar"

version := "1.0.0"

scalaVersion := "2.11.3"

packageBin in Compile := file(s"${name.value}_${scalaBinaryVersion.value}.jar")

您可能已经注意到,构建会将compile:package任务更改为指向jar文件。

那就是它。

执行sbt publishLocal并且jar文件应该在Ivy2本地存储库中,即~/.ivy2/local/org.abc/my-own-publish-jar_2.11/1.0.0/jars/my-own-publish-jar_2.11.jar

protip 使用命令行中指定的坐标编写插件应该非常容易。

答案 2 :(得分:2)

这是我几个月前将sbt工件推送到maven存储库(本地和远程)的博客文章。

http://brizzled.clapper.org/id/100/

答案 3 :(得分:-1)

答案 4 :(得分:-1)

我创建了一个示例Play Framework / sbt项目,该项目在此处创建了一个本地存储库(不只是publish-local):https://github.com/muymoo/local-ivy-repo-sbt 具体来看Build.scala

makeLocalRepoSettings(publishedProjects):_*

localRepoArtifacts += "org.apache.ws.security" % "wss4j" % "1.6.9"

这些localRepoArtifacts可以在我当地的常春藤回购中找到,但我认为您可以编辑它以使用普通的旧jar文件。

运行:play local-repository-created

这是https://github.com/sbt/sbt-remote-control的更简单版本,可以在Build.scala中完成更多工作。