如何将包含外部jar文件包含到jar中?

use*_*714 35 sbt

我的项目依赖于外部jar.我创建了一个目录lib并将jar文件复制到其中.这是我的build.sbt:

name := "approxstrmatch"

version := "1.0"

scalaVersion := "2.10.4"

unmanagedJars in Compile += file("lib/secondstring-20140729.jar")

libraryDependencies+="org.apache.spark"%%"spark-core"%"1.0.0"

resolvers += "AkkaRepository" at "http://repo.akka.io/releases/"
Run Code Online (Sandbox Code Playgroud)

当我运行cleanpackage,外部jar文件不会被包含在生成jar文件.为什么?

这是项目布局:

project/build.sbt
lib/
src/.....
Run Code Online (Sandbox Code Playgroud)

小智 37

试试这个

libraryDependencies += "com.acme.common" % "commonclass" % "1.0" from "file:///Users/bwong/git/perf-tools/commonclass/target/scala-2.11/commonclass_2.11-1.0.jar"
Run Code Online (Sandbox Code Playgroud)

我"sbt打包"常见的classproject,然后在依赖项目中的build.sbt中添加该库依赖项.

感谢http://flummox-engineering.blogspot.com/2014/06/sbt-use-jar-file-for-librarydependencies.html这个hack.


yǝs*_*ǝla 35

首先,unmanagedJars除非您有更复杂的配置,否则无需明确指定.只需将您的JAR文件放入lib目录,它们就会被添加到类路径(docs)中.

要使用所有必需的依赖项打包可执行JAR,请使用以下SBT插件之一:sbt-onejarsbt-assembly.package只需将您的类打包到一个jar中,并且不会因为包含依赖项而烦恼.

插件文档中的说明应该很容易指导您如何使用它们.


png*_*png 17

诀窍是确定lib将JAR放入哪个目录.您可以通过在sbt控制台中运行以下命令来完成此操作:show unmanagedBase.

如果您没有在那里看到您的项目,您可以运行show YOURPROJECT/unmanagedBase以找到正确的lib路径.