台湾展会用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

105 lines
3.1 KiB

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")
runtimeOnly("org.postgresql:postgresql")
runtimeOnly("mysql:mysql-connector-java")
runtimeOnly("com.oracle.database.jdbc:ojdbc8")
}
sourceSets {
main {
// java {
// setSrcDirs(listOf<String>())
// }
// 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")
}