The latest version of sbt-assembly as of November 2013 is 0.10.1 for sbt 0.13. Using this, I was able to create a fat jar using the latest stable Akka 2.2.3, using the default merge strategy.
Files
project / build.properties:
sbt.version=0.13.0
Project / assembly.sbt:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.10.1")
assembly.sbt:
import AssemblyKeys._ assemblySettings
build.sbt:
name := "sbt-assembly-akka-sample" version := "0.1.0-SNAPSHOT" scalaVersion := "2.10.3" libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % "2.2.3", "com.typesafe.akka" %% "akka-remote" % "2.2.3" )
SRC / Primary / scala / actor.scala:
package hello import akka.actor.{Actor, Props} import akka.event.Logging class MyActor extends Actor { val log = Logging(context.system, this) def receive = { case "test" ⇒ log.info("received test") case _ ⇒ log.info("received unknown message") } }
Src / main / scala / app.scala:
package hello object Main extends App { import akka.actor.{ActorSystem, Props} val system = ActorSystem("mySystem") val myActor = system.actorOf(Props[MyActor], "myactor") myActor ! "test" }
Output
Here is what I got by running assembly :
> assembly [info] Updating {file:/xxx/sbt-assembly-01/}sbt-assembly-01... [info] Resolving org.fusesource.jansi
And here is what it is like running jar:
$ java -jar target/scala-2.10/sbt-assembly-akka-sample-assembly-0.1.0-SNAPSHOT.jar [INFO] [11/11/2013 20:59:48.265] [mySystem-akka.actor.default-dispatcher-2] [akka:
source share