plugins { id 'application' id 'kotlin' id "io.ktor.plugin" version "$version_ktor" id 'kotlinx-serialization' alias(libs.plugins.license) } distributions { main { distributionBaseName = 'ustad-server' } } compileKotlin{ kotlinOptions.jvmTarget = "17" kotlinOptions { freeCompilerArgs += "-Xopt-in=com.squareup.kotlinpoet.metadata.KotlinPoetMetadataPreview" freeCompilerArgs += "-Xexpect-actual-classes" } } compileTestKotlin { kotlinOptions.jvmTarget = "17" } application { mainClass = 'com.ustadmobile.lib.rest.ServerAppMain' applicationName = "ustad-server" } tasks.withType(CreateStartScripts) { unixStartScriptGenerator.template = resources.text.fromFile("$projectDir/src/scripttemplates/unixStartScript.txt") windowsStartScriptGenerator.template = resources.text.fromFile("$projectDir/src/scripttemplates/windowsStartScript.txt") } ktor { fatJar { archiveFileName.set("ustad-server-all.jar") } } sourceSets.main { if(findProperty("ktorbundleproductionjs") == "true") { resources.srcDir(rootProject.file("app-react/build/dist-web/")) } } licenseReport { generateHtmlReport = false generateTextReport = true } tasks.register("copyLicenseReport", Copy) { from(project.file("build/reports/licenses/licenseReport.txt")) into(project.file("src/dist/licenses")) rename { "packages-licenses.txt" } } tasks.configureEach { if(it.name == "licenseReport") { tasks.getByName("copyLicenseReport").dependsOn(it) } } dependencies { implementation libs.ktor.client.core implementation libs.ktor.serialization.kotlinx.json implementation libs.ktor.client.content.negotiation implementation libs.ktor.io implementation fileTree(dir: 'libs', include: ['*.jar']) implementation libs.ktor.server.netty implementation libs.ktor.server.cors implementation libs.ktor.server.call.logging implementation libs.ktor.server.content.negotiation implementation libs.ktor.server.conditional.headers implementation libs.ktor.server.status.pages implementation libs.ktor.client.okhttp implementation libs.ktor.server.html.builder implementation libs.kotlinx.serialization implementation libs.simplejndi implementation libs.apache.commons.pool2 implementation libs.sqlite.jdbc implementation libs.postgresql implementation libs.commons.io implementation libs.jsoup implementation libs.commons.lang3 implementation libs.logback.classic implementation libs.kodein.di implementation libs.kodein.di.framework.ktor.server.jvm implementation libs.napier implementation libs.xmlpullparsekmp implementation libs.kxml2 implementation libs.quartz implementation libs.ktor.server.websockets implementation project(":core") implementation project(":sharedse") implementation project(":lib-database") implementation libs.door.room.annotations implementation libs.door.runtime implementation project(":lib-util") implementation libs.kotlin.stdlib.jdk8 implementation libs.netty.tcnative.boring.ssl.static implementation libs.jakarta.mail implementation libs.argparse4j implementation libs.kotlinx.datetime implementation libs.javaffmpeg api libs.moko.resources implementation project(":lib-cache") implementation(libs.libphonenumber.google) implementation libs.hsqldb implementation libs.vlcj implementation project(":lib-ihttp-ktor-server") //test testImplementation project(":lib-test-common") testImplementation project(":sharedse") testImplementation libs.ktor.server.test.host testImplementation libs.mockito.kotlin testImplementation libs.simplejndi testImplementation libs.apache.commons.pool2 testImplementation libs.sqlite.jdbc testImplementation libs.commons.dbcp2 testImplementation libs.ktor.server.netty testImplementation libs.mockwebserver testImplementation libs.ktor.client.okhttp testImplementation libs.apache.commons.pool2 testImplementation libs.sqlite.jdbc testImplementation libs.commons.dbcp2 testImplementation libs.postgresql testImplementation libs.turbine } mainClassName = 'com.ustadmobile.lib.rest.ServerAppMain' sourceCompatibility = "17" targetCompatibility = "17" if(findProperty("ktorbundleproductionjs") == "true") { //Required to ensure that JS resources are ready before any other task copies them etc. processResources.dependsOn(":app-react:build") }