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"