Directives
This document describes as scala-cli behaves if run as scala command. See more information in SIP-46
This document is a specification of scala runner.
For now it uses documentation specific to Scala CLI but at some point it may be refactor to provide more abstract documentation.
Documentation is splitted into sections in the spirit of RFC keywords (MUST, SHOULD).
MUST have directives:
Compiler options
Add Scala compiler options
//> using option option
//> using options option1, option2 …
Examples
//> using option "-Xasync"
//> using options "-Xasync", "-Xfatal-warnings"
Compiler plugins
Adds compiler plugins
using plugin org:name:ver
Examples
//> using plugin "org.typelevel:::kind-projector:0.13.2"
Dependency
Add dependencies
//> using lib "org:name:ver"
Examples
//> using lib "org.scalatest::scalatest:3.2.10"
//> using lib "org.scalameta::munit:0.7.29"
//> using lib "tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar"
Java options
Add Java options which will be passed when running an application.
//> using java-opt options
//> using javaOpt options
Examples
//> using javaOpt "-Xmx2g", "-Dsomething=a"
Java properties
Add Java properties
//> using javaProp key=value
//> using javaProp key
Examples
//> using javaProp "foo1=bar", "foo2"
Main class
Specify default main class
//> using main-class main class
//> using mainClass main class
Examples
//> using main-class "helloWorld"
Scala version
Set the default Scala version
//> using scala version+
Examples
//> using scala "3.0.2"
//> using scala "2.13"
//> using scala "2"
//> using scala "2.13.6", "2.12.16"
SHOULD have directives:
Custom JAR
Manually add JAR(s) to the class path
//> using jar path
//> using jars path1, path2 …
Examples
//> using jar "/Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.7/shapeless_2.13-2.3.7.jar"
Custom sources
Manually add sources to the Scala CLI project
//> using file hello.sc
//> using files Utils.scala, Helper.scala …
Examples
//> using file "utils.scala"
Java home
Sets Java home used to run your application or tests
//> using java-home path
//> using javaHome path
Examples
//> using java-home "/Users/Me/jdks/11"
Javac options
Add Javac options which will be passed when compiling sources.
//> using javac-opt options
//> using javacOpt options
Examples
//> using javacOpt "source", "1.8"
"target", "1.8"
Platform
Set the default platform to Scala.js or Scala Native
//> using platform (jvm|scala-js|scala-native)+
Examples
//> using platform "scala-js"
//> using platform "jvm", "scala-native"
Repository
Add a repository for dependency resolution
//> using repository repository
Examples
//> using repository "jitpack"
//> using repository "sonatype:snapshots"
//> using repository "https://maven-central.storage-download.googleapis.com/maven2"
Resource directories
Manually add a resource directory to the class path
//> using resourceDir path
//> using resourceDirs path1, path2 …
Examples
//> using resourceDir "./resources"
Scala Native options
Add Scala Native options
//> using nativeGc value
//> using nativeMode value
//> using nativeVersion value
//> using nativeCompile value1, value2
//> using nativeLinking value1, value2
//> using nativeClang value
//> using nativeClangPP value
//> using nativeEmbedResources true|false
Examples
//> using nativeVersion "0.4.0"
Scala.js options
Add Scala.js options
//> using jsVersion value
//> using jsMode value
//> using jsModuleKind value
//> using jsSmallModuleForPackage value1, value2
//> using jsCheckIr true|false
//> using jsEmitSourceMaps true|false
//> using jsDom true|false
//> using jsHeader value
//> using jsAllowBigIntsForLongs true|false
//> using jsAvoidClasses true|false
//> using jsAvoidLetsAndConsts true|false
//> using jsModuleSplitStyleStr value
//> using jsEsVersionStr value
Examples
//> using jsModuleKind "common"
Test framework
Set the test framework
//> using testFramework class_name | //> using `test-framework` class_name
Examples
//> using testFramework "utest.runner.Framework"