chore: init
This commit is contained in:
+102
@@ -0,0 +1,102 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
maven {
|
||||
url = 'https://repo.runelite.net'
|
||||
content {
|
||||
includeGroupByRegex("net\\.runelite.*")
|
||||
}
|
||||
}
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
def runeLiteVersion = 'latest.release'
|
||||
def pluginMainClass = 'com.example.ExamplePluginTest'
|
||||
|
||||
dependencies {
|
||||
compileOnly group: 'net.runelite', name: 'client', version: runeLiteVersion
|
||||
|
||||
compileOnly 'org.projectlombok:lombok:1.18.30'
|
||||
annotationProcessor 'org.projectlombok:lombok:1.18.30'
|
||||
|
||||
testImplementation 'junit:junit:4.12'
|
||||
testImplementation group: 'net.runelite', name: 'client', version: runeLiteVersion
|
||||
testImplementation group: 'net.runelite', name: 'jshell', version: runeLiteVersion
|
||||
testCompileOnly 'org.projectlombok:lombok:1.18.30'
|
||||
testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.encoding = 'UTF-8'
|
||||
options.release.set(11)
|
||||
}
|
||||
|
||||
tasks.register('run', JavaExec) {
|
||||
classpath = sourceSets.test.runtimeClasspath
|
||||
mainClass = pluginMainClass
|
||||
|
||||
jvmArgs "-ea"
|
||||
args "--developer-mode", "--debug"
|
||||
}
|
||||
|
||||
tasks.register('shadowJar', Jar) {
|
||||
dependsOn configurations.testRuntimeClasspath
|
||||
manifest {
|
||||
attributes('Main-Class': pluginMainClass, 'Multi-Release': true)
|
||||
}
|
||||
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
from sourceSets.main.output
|
||||
from sourceSets.test.output
|
||||
from {
|
||||
configurations.testRuntimeClasspath.collect { file ->
|
||||
file.isDirectory() ? file : zipTree(file)
|
||||
}
|
||||
}
|
||||
|
||||
exclude 'META-INF/INDEX.LIST'
|
||||
exclude 'META-INF/*.SF'
|
||||
exclude 'META-INF/*.DSA'
|
||||
exclude 'META-INF/*.RSA'
|
||||
exclude '**/module-info.class'
|
||||
|
||||
group = BasePlugin.BUILD_GROUP
|
||||
archiveClassifier.set('shadow')
|
||||
archiveFileName.set("${rootProject.name}-${project.version}-all.jar")
|
||||
}
|
||||
|
||||
tasks.register('deploy') {
|
||||
dependsOn 'shadowJar'
|
||||
doLast {
|
||||
def destDir = new File("${System.getProperty('user.home')}/.local/share/bolt-launcher")
|
||||
destDir.mkdirs()
|
||||
def srcFile = file("build/libs/${rootProject.name}-${project.version}-all.jar")
|
||||
def targetFile = new File(destDir, "custom-runelite.jar")
|
||||
def tmpFile = new File(destDir, "custom-runelite.jar.tmp")
|
||||
|
||||
// Copy to temporary file first
|
||||
tmpFile.bytes = srcFile.bytes
|
||||
|
||||
// Atomic move (keeps open file descriptors valid on running Linux processes)
|
||||
java.nio.file.Files.move(
|
||||
tmpFile.toPath(),
|
||||
targetFile.toPath(),
|
||||
java.nio.file.StandardCopyOption.ATOMIC_MOVE,
|
||||
java.nio.file.StandardCopyOption.REPLACE_EXISTING
|
||||
)
|
||||
// Also copy to Downloads as documented in CLAUDE.md
|
||||
def downloadsDir = new File("${System.getProperty('user.home')}/Downloads")
|
||||
if (downloadsDir.exists()) {
|
||||
new File(downloadsDir, "RuneLite.jar").bytes = srcFile.bytes
|
||||
}
|
||||
println "Plugin sicher und atomar nach ~/.local/share/bolt-launcher/custom-runelite.jar installiert!"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user