Skip to main content

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"