sbt-ammonite-classpath is an sbt plug-in to export classpath of an sbt project to Ammonite Script, which can be then used in Ammonite or Almond. Also supports running Ammonite REPL directly with desired classpath.
// project/plugins.sbt
addSbtPlugin("com.thoughtworks.deeplearning" % "sbt-ammonite-classpath" % "latest.release")// src/main/scala/mypackage/MyObject.scala
package mypackage
object MyObject {
  def hello() = println("Hello, World!")
}$ sbt Compile/fullClasspath/exportToAmmoniteScript && amm --predef target/scala-2.12/fullClasspath-Compile.sc
...
...
...
[success] Total time: 1 s, completed Apr 17, 2018 10:11:08 AM
Loading...
Compiling /private/tmp/example/target/scala-2.12/fullClasspath-Compile.sc
Welcome to the Ammonite Repl 1.1.0
(Scala 2.12.4 Java 1.8.0_162)
If you like Ammonite, please support our development at www.patreon.com/lihaoyi
@ mypackage.MyObject.hello() 
Hello, World!Alternatively the classpath can be dynamically loaded by an import $file statement, too:
$ ammLoading...
Welcome to the Ammonite Repl 1.1.0
(Scala 2.12.4 Java 1.8.0_162)
If you like Ammonite, please support our development at www.patreon.com/lihaoyi
@ import $file.target.`scala-2.12`.`fullClasspath-Compile` 
Compiling /private/tmp/example/target/scala-2.12/fullClasspath-Compile.sc
import $file.$                                          
@ mypackage.MyObject.hello() 
Hello, World!
This plugin also supports directly running Ammonite REPL from sbt. Similar to using above scopes you may launch the Ammonite REPL with desired classpath and compile scope as follows:
sbt "{scope}:{classpath}::launchAmmoniteRepl"Where scope can be one of compile, test and runtime, while classpath can be one of fullClasspath, dependencyClasspath, managedClasspath, unmanagedClasspath.
Example:
sbt "test:dependencyClasspath::launchAmmoniteRepl"If you would like to run Ammonite REPL with full classpath, you can simply use launchAmmoniteRepl task within compile (or any other) scope without having to specify classpath task scope:
sbt "compile:launchAmmoniteRepl" 
# or simply (without scope, compile will be implied)
sbt launchAmmoniteReplinitialCommands setting is also supported. If your initialCommands or launchAmmoniteRepl / initialCommands setting is not appropriate for a given scope, you can override it in one of this plugin's scopes. For example if you would like to only have import ammonite.ops._ in your Ammonite REPL but not Scala REPL, you can do as follows:
...
console / initialCommands := "println(\"Hello Console\")",
Compile / launchAmmoniteRepl / initialCommands += "\nimport ammonite.ops._"
// or simply launchAmmoniteRepl / initialCommands
...When you run sbt launchAmmoniteRepl, both commands will be in effect:
sbt launchAmmoniteRepl
...
[info] running ammonite.Main --predef /private/tmp/example/target/scala-2.13/fullClasspath-Compile.sc --predef-code "println("Hello Console")
[info] import ammonite.ops._"
Loading...
Hello Console
Welcome to the Ammonite Repl 2.2.0-4-4bd225e (Scala 2.13.3 Java 1.8.0_252)
@ ls! pwd 
res2: LsSeq = 
".bloop"          ".gitignore"      ".vscode"         "build.sbt"       'target
".git"            ".metals"         'LICENCE          'project          'test
".github"         ".scalafmt.conf"  "README.md"       'src
@By default it will use the "latest.release" version of Ammonite, but if you would like to change it, you can override ammoniteVersion setting, e.g.:
ammoniteVersion := "2.1.4"
Test / ammoniteVersion := "2.2.0"sbt-ammonite is an sbt 0.13 plug-in to launch Ammonite. It automatically passes the classpath instead of creating a sc file. However, it does not support Almond.
- Sbt 1.x