dependencies { compile project(':api') compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8" compile group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.3.61' testCompile group: 'junit', name: 'junit', version: '4.12' compile group: 'org.pf4j', name: 'pf4j', version: '3.2.0' compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.1' compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '2.0.0-alpha1' compile "com.xenomachina:kotlin-argparser:2.0.7" } ext.generatedResourcesDir = file("$buildDir/generated-resources") task generateResources { doLast { generatedResourcesDir.mkdir() generatePresetsIndex() } } sourceSets.main.output.dir generatedResourcesDir, builtBy: generateResources private void generatePresetsIndex() { def presets = new File(sourceSets.main.resources.srcDirs[0], "presets") def index = new PrintWriter(new FileWriter(new File(generatedResourcesDir, "presets.index"))) presets.listFiles().each { index.println(it.name) } index.close() } jar { dependsOn generateResources zip64 true manifest { attributes 'Main-Class': 'io.smnp.SMNPKt' } // 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 { exclude "META-INF/*.SF" exclude "META-INF/*.DSA" exclude "META-INF/*.RSA" it.isDirectory() ? it : zipTree(it) } from files(sourceSets.main.output.classesDirs) from files(sourceSets.main.resources) }