import java.text.SimpleDateFormat import java.util.* plugins { // id("org.jetbrains.kotlin.jvm") // id("org.springframework.boot") } dependencies { api("org.springframework.boot:spring-boot-starter-web") api("org.clever:clever-spring") api("org.clever:clever-core") api("org.clever:clever-data-jdbc") api("org.clever:clever-data-jdbc-meta") api("org.clever:clever-data-redis") api("org.clever:clever-web") // api("org.clever:clever-security") // api("org.clever:clever-task") // api("org.clever:clever-task-ext") api("org.clever:clever-js-graaljs") runtimeOnly("org.postgresql:postgresql") runtimeOnly("mysql:mysql-connector-java") runtimeOnly("com.oracle.database.jdbc:ojdbc8") } sourceSets { main { // java { // setSrcDirs(listOf()) // } // withConvention(GroovySourceSet::class) { // groovy { // setSrcDirs(listOf("src/main/java", "src/main/groovy")) // } // } } } //tasks.compileJava { // enabled = false //} // 在源码目录中引入资源(如: mybatis xml文件) tasks.processResources { val includes = listOf("**/*.xml") from("src/main/java") { include(includes) } } // 拷贝lib文件 tasks.register("copyJar", Copy::class) { val libDir = layout.buildDirectory.dir("libs/lib").get() delete(libDir) from(configurations.runtimeClasspath) into(libDir) } // 拷贝配置文件 tasks.register("copyResources", Copy::class) { val configDir = layout.buildDirectory.dir("libs/config").get() delete(configDir) from("src/main/resources") into(configDir) } // 配置启动jar tasks.jar { enabled = true manifest.attributes["Main-Class"] = "com.yvan.workbench.StartWorkbench" // lib/jar 加入 classPath val classPaths = project.configurations.runtimeClasspath.get().files.map { file -> "lib/${file.name}" }.toMutableList() // // resources 资源加入 classPath (当没有把resources资源编译进jar包时很有用) // val resourcesFile = File(projectDir.absolutePath, "src/main/resources") // val resourcesPath = resourcesFile.absolutePath // resourcesFile.listFiles { file -> file.isFile }?.forEach { file -> // var path = file.absolutePath // if (path.startsWith(resourcesPath)) { // path = path.substring(resourcesPath.length + 1) // path = path.replace('\\', '/') // } // classPaths.add("config/$path") // } manifest.attributes["Class-Path"] = classPaths.joinToString(" ") // println("### [${classPaths.joinToString(" ")}]") } // 触发class热部署 tasks.getByName("classes") { doLast { File("./build").mkdirs() File("./build", ".hotReload").apply { if (this.exists()) { this.createNewFile() } this.appendText("${SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(Date())}\n") println("> [触发class热部署] -> ${this.absolutePath}") } } } tasks.getByName("build") { dependsOn("copyJar") dependsOn("copyResources") dependsOn("jar") }