272 lines
7.0 KiB
Groovy
272 lines
7.0 KiB
Groovy
plugins {
|
|
id 'java'
|
|
id 'application'
|
|
id 'eclipse'
|
|
id 'idea'
|
|
}
|
|
|
|
group = 'com.openosrs'
|
|
version = '1.0.0'
|
|
description = 'OpenOSRS Modernized Client - Agent-Friendly RuneScape Client'
|
|
|
|
java {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
application {
|
|
mainClass = 'com.openosrs.client.ModernizedClient'
|
|
applicationName = 'modernized-client'
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
url 'https://repo.runelite.net'
|
|
content {
|
|
includeGroupByRegex "net\\.runelite.*"
|
|
}
|
|
}
|
|
maven {
|
|
url 'https://raw.githubusercontent.com/open-osrs/hosting/master'
|
|
content {
|
|
includeGroupByRegex "com\\.openosrs.*"
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// Logging
|
|
implementation 'org.slf4j:slf4j-api:2.0.9'
|
|
implementation 'ch.qos.logback:logback-classic:1.4.11'
|
|
|
|
// JSON processing
|
|
implementation 'com.fasterxml.jackson.core:jackson-core:2.15.2'
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
|
|
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.2'
|
|
|
|
// Utilities
|
|
implementation 'com.google.guava:guava:32.1.2-jre'
|
|
implementation 'org.apache.commons:commons-lang3:3.13.0'
|
|
implementation 'commons-io:commons-io:2.13.0'
|
|
|
|
// Networking
|
|
implementation 'org.apache.httpcomponents.client5:httpclient5:5.2.1'
|
|
implementation 'org.apache.httpcomponents.core5:httpcore5:5.2.2'
|
|
|
|
// Concurrency
|
|
implementation 'net.jcip:jcip-annotations:1.0'
|
|
|
|
// Optional: RuneLite API compatibility (if needed)
|
|
// implementation 'net.runelite:runelite-api:1.10.17'
|
|
|
|
// Testing
|
|
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
|
|
testImplementation 'org.mockito:mockito-core:5.5.0'
|
|
testImplementation 'org.mockito:mockito-junit-jupiter:5.5.0'
|
|
testImplementation 'org.assertj:assertj-core:3.24.2'
|
|
}
|
|
|
|
tasks.withType(JavaCompile) {
|
|
options.encoding = 'UTF-8'
|
|
options.compilerArgs.addAll([
|
|
'-Xlint:all',
|
|
'-Xlint:-processing',
|
|
'-Werror'
|
|
])
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
testLogging {
|
|
events "passed", "skipped", "failed"
|
|
exceptionFormat "full"
|
|
}
|
|
}
|
|
|
|
jar {
|
|
manifest {
|
|
attributes(
|
|
'Main-Class': 'com.openosrs.client.ModernizedClient',
|
|
'Implementation-Title': 'OpenOSRS Modernized Client',
|
|
'Implementation-Version': project.version,
|
|
'Implementation-Vendor': 'OpenOSRS',
|
|
'Built-Date': new Date(),
|
|
'Built-By': System.getProperty('user.name'),
|
|
'Built-JDK': System.getProperty('java.version')
|
|
)
|
|
}
|
|
|
|
// Include dependencies in fat jar for easy distribution
|
|
from {
|
|
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
|
}
|
|
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
|
|
exclude 'META-INF/*.SF'
|
|
exclude 'META-INF/*.DSA'
|
|
exclude 'META-INF/*.RSA'
|
|
}
|
|
|
|
// Task to create a distribution package
|
|
task createDistribution(type: Zip) {
|
|
group = 'distribution'
|
|
description = 'Creates a distribution package'
|
|
|
|
archiveFileName = "modernized-client-${version}.zip"
|
|
destinationDirectory = file("$buildDir/distributions")
|
|
|
|
from jar
|
|
from 'README.md'
|
|
from 'LICENSE'
|
|
|
|
into('scripts') {
|
|
from fileTree('scripts')
|
|
filePermissions {
|
|
unix(0755)
|
|
}
|
|
}
|
|
|
|
into('config') {
|
|
from fileTree('config')
|
|
}
|
|
}
|
|
|
|
// Development tasks
|
|
task runWithDebug(type: JavaExec) {
|
|
group = 'development'
|
|
description = 'Run the client with debug logging'
|
|
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
mainClass = 'com.openosrs.client.ModernizedClient'
|
|
|
|
systemProperty 'org.slf4j.simpleLogger.defaultLogLevel', 'DEBUG'
|
|
systemProperty 'org.slf4j.simpleLogger.showDateTime', 'true'
|
|
systemProperty 'org.slf4j.simpleLogger.dateTimeFormat', 'HH:mm:ss.SSS'
|
|
|
|
args = ['--debug']
|
|
}
|
|
|
|
task generateApiDocs(type: Javadoc) {
|
|
group = 'documentation'
|
|
description = 'Generate API documentation'
|
|
|
|
source = sourceSets.main.allJava
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
|
|
options {
|
|
title = "OpenOSRS Modernized Client API"
|
|
author = true
|
|
version = true
|
|
use = true
|
|
windowTitle = "OpenOSRS Modernized Client API"
|
|
docTitle = "OpenOSRS Modernized Client API"
|
|
|
|
links(
|
|
'https://docs.oracle.com/en/java/javase/17/docs/api/',
|
|
'https://www.slf4j.org/apidocs/',
|
|
'https://google.github.io/guava/releases/32.1.2-jre/api/docs/'
|
|
)
|
|
|
|
addStringOption('Xdoclint:none', '-quiet')
|
|
}
|
|
|
|
destinationDir = file("$buildDir/docs/api")
|
|
|
|
include '**/api/**'
|
|
include '**/scripting/**'
|
|
include '**/plugins/**'
|
|
}
|
|
|
|
// Quality assurance
|
|
task checkCodeStyle {
|
|
group = 'verification'
|
|
description = 'Check code style and conventions'
|
|
|
|
doLast {
|
|
println "Code style check would go here"
|
|
// Could integrate with SpotBugs, PMD, or Checkstyle
|
|
}
|
|
}
|
|
|
|
// Performance profiling
|
|
task profileStartup(type: JavaExec) {
|
|
group = 'profiling'
|
|
description = 'Profile client startup performance'
|
|
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
mainClass = 'com.openosrs.client.ModernizedClient'
|
|
|
|
jvmArgs = [
|
|
'-XX:+PrintGCDetails',
|
|
'-XX:+PrintGCTimeStamps',
|
|
'-XX:+PrintGCApplicationStoppedTime',
|
|
'-Xloggc:build/gc.log'
|
|
]
|
|
|
|
systemProperty 'profile.startup', 'true'
|
|
}
|
|
|
|
// Example script runners
|
|
task runWoodcuttingExample(type: JavaExec) {
|
|
group = 'examples'
|
|
description = 'Run the woodcutting script example'
|
|
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
mainClass = 'com.openosrs.client.ModernizedClient'
|
|
args = ['--script', 'woodcutting', '--auto-start']
|
|
}
|
|
|
|
task runCombatExample(type: JavaExec) {
|
|
group = 'examples'
|
|
description = 'Run the combat training script example'
|
|
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
mainClass = 'com.openosrs.client.ModernizedClient'
|
|
args = ['--script', 'combat-training', '--auto-start']
|
|
}
|
|
|
|
task runLoginExample(type: JavaExec) {
|
|
group = 'examples'
|
|
description = 'Run the login system demonstration'
|
|
|
|
classpath = sourceSets.main.runtimeClasspath
|
|
mainClass = 'com.openosrs.client.examples.ExampleLoginAgent'
|
|
|
|
// Enable debug logging for the example
|
|
systemProperty 'org.slf4j.simpleLogger.defaultLogLevel', 'DEBUG'
|
|
systemProperty 'org.slf4j.simpleLogger.showDateTime', 'true'
|
|
systemProperty 'org.slf4j.simpleLogger.dateTimeFormat', 'HH:mm:ss.SSS'
|
|
|
|
standardInput = System.in
|
|
}
|
|
|
|
// Clean up build artifacts
|
|
clean {
|
|
delete 'logs'
|
|
delete 'cache'
|
|
delete 'profiles'
|
|
}
|
|
|
|
// IDE integration
|
|
eclipse {
|
|
project {
|
|
name = 'modernized-client'
|
|
comment = 'OpenOSRS Modernized Client for AI Agents'
|
|
}
|
|
}
|
|
|
|
idea {
|
|
module {
|
|
downloadJavadoc = true
|
|
downloadSources = true
|
|
}
|
|
}
|
|
|
|
// Wrapper configuration
|
|
wrapper {
|
|
gradleVersion = '8.3'
|
|
distributionType = Wrapper.DistributionType.ALL
|
|
}
|