For completeness, this is a setting that I created almost simultaneously with the hotkey :
Main settings.gradle : include 'shared', 'client', 'server'
Home build.gradle :
buildscript { ext { kotlinVer = '1.0.0-beta-4589' } repositories { mavenCentral() maven { url 'http://oss.sonatype.org/content/repositories/snapshots' } } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVer" } } allprojects { apply plugin: 'idea' group = 'some.company' version = '0.0.1' ext { kotlinVer = '1.0.0-beta-4589' // Lib versions go there. } repositories { mavenLocal() mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://oss.sonatype.org/content/repositories/releases/" } } } project('shared') { apply plugin: 'kotlin' } project('server') { apply plugin: 'kotlin' apply plugin: 'application' mainClassName = 'some.company.Main' dependencies { compile project(':shared') } } project('client') { apply plugin: 'kotlin2js' dependencies { compile project(':shared') } }
build.gradle client:
apply plugin: 'kotlin2js' compileKotlin2Js { kotlinOptions.outputFile = "server/src/main/resources/static/js/app.js" kotlinOptions.sourceMap = true } sourceSets { main.kotlin.srcDirs += '../shared/src/main/kotlin' // hotkey solution: // main.kotlin.srcDirs += project(':shared').sourceSets.main.kotlin.srcDirs } dependencies { compile "org.jetbrains.kotlin:kotlin-js-library:$kotlinVer" }
Server build.gradle :
apply plugin: 'kotlin' sourceCompatibility = 1.7 targetCompatibility = 1.7 dependencies { // Libs go there. compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVer" testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVer" }
The general build.gradle project contains only apply plugin: 'kotlin' and, well, I'm not sure that using shared libraries is simple (or necessary, in many cases), so I think it can even remain empty.
gradle client:build creates a JavaScript file in the serverโs static resources folder. gradle idea creates an IntelliJ project with properly related dependencies and source folders (if the default names are src/main/kotlin , etc., see the official Kotlin Gradle manual for custom source dirs).
JustACluelessNewbie
source share