oh blya
This commit is contained in:
@ -5,7 +5,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "su.sonoma"
|
||||
version = "1.0-SNAPSHOT"
|
||||
version = "0.1"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
@ -14,6 +14,7 @@ repositories {
|
||||
dependencies {
|
||||
testImplementation(kotlin("test"))
|
||||
implementation("io.ktor:ktor-network:3.1.3")
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.22")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
|
||||
}
|
||||
|
||||
@ -21,6 +22,26 @@ kotlin {
|
||||
jvmToolchain(25)
|
||||
}
|
||||
|
||||
tasks.jar {
|
||||
dependsOn("buildTunLib")
|
||||
dependsOn(configurations.runtimeClasspath)
|
||||
|
||||
manifest {
|
||||
attributes["Main-Class"] = "su.sonoma.MainKt"
|
||||
}
|
||||
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
|
||||
from(sourceSets.main.get().output)
|
||||
|
||||
from({
|
||||
configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
|
||||
})
|
||||
|
||||
archiveBaseName.set(rootProject.name)
|
||||
archiveVersion.set(version.toString())
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
@ -35,6 +56,11 @@ tasks.register<JavaExec>("runServer") {
|
||||
"--add-opens=java.base/java.io=ALL-UNNAMED"
|
||||
)
|
||||
dependsOn("buildTunLib")
|
||||
|
||||
systemProperty(
|
||||
"java.library.path",
|
||||
"${projectDir}/build/native/"
|
||||
)
|
||||
}
|
||||
|
||||
tasks.register<JavaExec>("runClient") {
|
||||
@ -47,6 +73,11 @@ tasks.register<JavaExec>("runClient") {
|
||||
"--add-opens=java.base/java.io=ALL-UNNAMED"
|
||||
)
|
||||
dependsOn("buildTunLib")
|
||||
|
||||
systemProperty(
|
||||
"java.library.path",
|
||||
"${projectDir}/build/native/"
|
||||
)
|
||||
}
|
||||
|
||||
val javaHome = Jvm.current().javaHome.absolutePath
|
||||
@ -74,4 +105,53 @@ tasks.register<Exec>("buildTunLib") {
|
||||
"-I$javaHome/include",
|
||||
"-I$javaHome/include/linux"
|
||||
)
|
||||
}
|
||||
|
||||
tasks.register("generateRunScript") {
|
||||
|
||||
val output = layout.buildDirectory.file("tmp/${rootProject.name}")
|
||||
val name = rootProject.name.plus('-').plus(version)
|
||||
val jarName = name.plus(".jar")
|
||||
|
||||
outputs.file(output)
|
||||
|
||||
doLast {
|
||||
val script = output.get().asFile
|
||||
|
||||
script.parentFile.mkdirs()
|
||||
|
||||
script.writeText("""
|
||||
#!/bin/bash
|
||||
|
||||
java \
|
||||
-Djava.library.path="." \
|
||||
-jar "$jarName" "$@"
|
||||
""".trimIndent())
|
||||
|
||||
script.setExecutable(true)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register<Tar>("packageApp") {
|
||||
group = "build"
|
||||
|
||||
destinationDirectory.set(layout.buildDirectory.dir("dist"))
|
||||
|
||||
compression = Compression.GZIP
|
||||
|
||||
dependsOn("jar")
|
||||
dependsOn("generateRunScript")
|
||||
|
||||
val name = rootProject.name.plus('-').plus(version)
|
||||
val jarName = name.plus(".jar")
|
||||
|
||||
archiveFileName.set("$name.tar.gz")
|
||||
|
||||
|
||||
from("build/libs/$jarName")
|
||||
|
||||
from("build/native/libtun.so")
|
||||
|
||||
from("build/tmp/${rootProject.name}")
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user