![](/img/trans.png)
[英]How can I add unmanaged JARs in sbt-assembly to the final fat JAR?
[英]Sbt-assembly: How can i assemble all classes to a single fat jar for projects with dependence
我正在使用sbt-assembly打包我的scala对象,但是我无法弄清楚如何为一个聚集并依赖于许多其他项目的项目组装一个胖子。
例如,我有:
lazy val a = project in file("project-a")
lazy val poj = (project in file("project-poj")).dependsOn(a)
lazy val root = (project in file(".")).aggregate(a, poj)
进行sbt组装后,poj-assembly.jar和root-assembly.jar在项目a中未包含scala类。
感谢帮助。
poj-assembly.jar
应该包括项目a中的类。 否则,请在Github上提供一个完整的示例,因为那可能是sbt-assembly错误。
这是我的示范。
$ sbt
> poj/assembly
[info] Compiling 1 Scala source to /xxx/project-poj/target/scala-2.12/classes...
[info] Including: scala-library-2.12.1.jar
[info] Checking every *.class/*.jar file's SHA-1.
[info] Merging files...
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
[warn] Strategy 'discard' was applied to a file
[info] SHA-1: 58a67743530fef8d0713759060c685c536d29591
[info] Packaging /xxx/project-poj/target/scala-2.12/poj-assembly-0.1.0-SNAPSHOT.jar ...
[info] Done packaging.
[success] Total time: 2 s, completed Jan 22, 2017 8:05:29 AM
> exit
$ java -jar project-poj/target/scala-2.12/poj-assembly-0.1.0-SNAPSHOT.jar
A(1)
如您在上面看到的,它说A(1)
,这是我在项目a中定义的一个类。 以下是构建中的文件。
sbt.version=0.13.13
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
lazy val root = (project in file("."))
.aggregate(a, poj)
.settings(
organization in ThisBuild := "com.example",
scalaVersion in ThisBuild := "2.12.1",
version in ThisBuild := "0.1.0-SNAPSHOT",
name := "Hello"
)
lazy val a = (project in file("project-a"))
lazy val poj = (project in file("project-poj"))
.dependsOn(a)
package example
case class A(a: Int)
package example
object Hello extends App {
println(example.A(1))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.