plugins { id 'org.jetbrains.kotlin.jvm' version '1.3.41' } def getVersion() { // Dynamically read version from CMake file String text = new File('../../appInfo.cmake').getText('UTF-8') String major = (text =~ /appVersionMajor\s+(\d+)/)[0][1] String minor = (text =~ /appVersionMinor\s+(\d+)/)[0][1] String patch = (text =~ /appVersionPatch\s+(\d+)/)[0][1] String suffix = (text =~ /appVersionSuffix\s+"(.*?)"/)[0][1] String result = "${major}.${minor}.${patch}${suffix}" return result } group 'com.rhubarb_lip_sync' version = getVersion() repositories { mavenCentral() jcenter() } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" implementation 'com.beust:klaxon:5.0.1' implementation 'org.apache.commons:commons-lang3:3.9' implementation 'no.tornado:tornadofx:1.7.19' } compileKotlin { kotlinOptions.jvmTarget = '1.8' } compileTestKotlin { kotlinOptions.jvmTarget = '1.8' } jar { manifest { attributes 'Main-Class': 'com.rhubarb_lip_sync.rhubarb_for_spine.MainKt' } // This line of code recursively collects and copies all of a project's files // and adds them to the JAR itself. One can extend this task, to skip certain // files or particular types at will from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }