我有一个编译为jar的库(不是sbt项目,没有源代码,只是jar文件),这在存储库中是不可用的。
有没有办法在本地发布jar,所以我可以使用libraryDependencies += "org.xxx" % "xxx" % "1.0"
表示法添加依赖项? (我已经知道如何通过将文件复制到lib
文件夹来将文件添加到项目中。)
答案 0 :(得分:53)
** publishLocal **操作用于将项目发布到本地Ivy存储库。默认情况下,此本地存储库位于$ {user.home} / .vy2 / local中。然后,您可以在同一台计算机source
上的其他项目中使用此项目 编辑:对不起,我误解了你的问题。这是一个example,用于向您当地的常春藤回购发布一个或多个来源。答案 1 :(得分:31)
tl; dr 我称之为技巧而不是sbt的功能。你已被警告过了。
我们说你已经file.jar
发布了。与任何构建工具一样,sbt包括,它执行最终创建工件的任务 - 大多数情况下是一个jar文件 - 来自项目中的文件。
项目为工件设置坐标。
诀窍是利用sbt所需的设置环境(= 坐标)来发布jar(否则你必须在命令行上指定它们可能是非常用户友好的。)
使用必要的设置创建build.sbt
- organization
,name
,version
以及可能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存储库(本地和远程)的博客文章。
答案 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
中完成更多工作。