我有一个编译成jar的库(不是sbt项目,没有源代码,只有jar文件),这在存储库中是不可用的。
有没有一种方法可以在本地发布jar,以便我可以使用libraryDependencies += "org.xxx" % "xxx" % "1.0"表示法添加依赖项?(我已经知道如何通过将文件复制到lib文件夹来将文件添加到项目中。)
发布于 2012-08-24 22:04:04
发布于 2014-10-23 23:56:23
tl;dr我认为这是一种技巧,而不是sbt的特性。我已经警告过你了。
假设您有要发布的file.jar。与任何构建工具(包括sbt )一样,它的目的是执行最终在项目文件之外创建工件的任务-在大多数情况下是jar文件。
该项目为工件设置坐标。
诀窍是利用sbt所需的来为要发布的jar设置环境(=坐标)(否则,您必须在命令行中指定它们,这可能是用户友好的,也可能是不友好的)。
使用必要的设置- organization、name、version和可能的scalaVersion -创建一个build.sbt,并将其保存在jar文件所在的位置。
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编写一个在命令行上指定坐标的插件现在应该很容易了。
发布于 2015-12-21 03:45:28
假设您有wetElephant.jar和wetElephant-javadoc.jar文件、一些第三方库和相应的javadoc,您希望将它们发布到本地存储库,并使用libraryDependencies sbt taskKey从另一个项目中引用它们。
这是你需要做的。
wetElephant.jar和wetElephant-javadoc.jar)放入build.sbt文件(或Build.scala文件)中的modules\wetElephantlazy val stolenLib =项目.in(文件(“modules/wetElephant”)) .settings(组织:= "com.stolenLibs",名称:= "wetElephant",version := "0.1-IDonKnow",crossPaths := false,//不要在repo publishMavenStyle := true中将scala版本添加到此工件,autoScalaLibrary := false,//don't attach scala lib as dependency :=“用于将依赖项发布到maven存储库的项目,使用'sbt publishLocal‘安装它”,packageBin in Compile := baseDirectory.value / s"${name.value}.jar",packageDoc in Compile := baseDirectory.value / s"${name.value}-javadoc.jar“)
publishLocal任务(我是从激活器中调用的,并以项目名称为前缀):./激活器湿wetElephant/publishLocal
..。并阅读输出以查看发布的内容和位置:
/cygdrive/d/devstation-workspace/projects/m4l-patches 1
[info] Loading project definition from D:\devstation-workspace\projects\m4l-patches\project
[info] Set current project to m4l-patches (in build file:/D:/devstation-workspace/projects/m4l-patches/)
[info] Updating {file:/D:/devstation-workspace/projects/m4l-patches/}wetElephant...
[info] Packaging D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\wetelephant-0.1-IDonKnow-sources.jar ...
[info] Done packaging.
[info] Wrote D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\wetelephant-0.1-IDonKnow.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...4 ....
[info] Done updating.
[info] :: delivering :: com.stolenLibs#wetelephant;0.1-IDonKnow :: 0.1-IDonKnow :: release :: Sun Dec 20 20:09:24 CET 2015
[info] delivering ivy file to D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\ivy-0.1-IDonKnow.xml
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\poms\wetelephant.pom
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\jars\wetelephant.jar
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\srcs\wetelephant-sources.jar
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\docs\wetelephant-javadoc.jar
[info] published ivy to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\ivys\ivy.xml
[success] Total time: 1 s, completed 2015-12-20 20:09:24libraryDependencies += "com.stolenLibs“% "wetElephant”% "0.1-IDontKnow"
免责声明:我不知道如何不发布源代码...
https://stackoverflow.com/questions/7798767
复制相似问题