Tooling and Project Concepts
Source Set Layout
Kotlin JVM projects usually separate production and test source sets.
source set
A source set groups files by role, such as `main` code or `test` code.
Source Set Layout
SourceSetLayout.kt
Replay: real traced execution (multi-file project)
fun main() {
val sourceSet = "main"
val language = "kotlin"
val root = "src"
val path = listOf(root, sourceSet, language).joinToString("/")
val purpose = if (sourceSet == "main") "application" else "verification"
println("path=$path")
println("purpose=$purpose")
}
fun main() {
val sourceSet = "test"
val language = "kotlin"
val root = "src"
val path = listOf(root, sourceSet, language).joinToString("/")
val purpose = if (sourceSet == "main") "application" else "verification"
println("path=$path")
println("purpose=$purpose")
}
sourceSet ← main, language ← kotlin, root ← src, path ← src/main/kotlin
1fun main() {2 val sourceSet→ main = "main" //@sourceSet="test"3 val language→ kotlin = "kotlin"4 val root→ src = "src"5 val path→ src/main/kotlin = listOf(rootsrc, sourceSetmain, languagekotlin).joinToString("/")6 val purpose→ application = if (sourceSetmain == "main") "application" else "verification"78 println("path=$pathsrc/main/kotlin")9 println("purpose=$purposeapplication")10}outputpath=src/main/kotlin purpose=application
sourceSet ← test, language ← kotlin, root ← src, path ← src/test/kotlin
1fun main() {2 val sourceSet→ test = "test"3 val language→ kotlin = "kotlin"4 val root→ src = "src"5 val path→ src/test/kotlin = listOf(rootsrc, sourceSettest, languagekotlin).joinToString("/")6 val purpose→ verification = if (sourceSettest == "main") "application" else "verification"78 println("path=$pathsrc/test/kotlin")9 println("purpose=$purposeverification")10}outputpath=src/test/kotlin purpose=verification