start the repo
This commit is contained in:
271
modernized-client/build.gradle
Normal file
271
modernized-client/build.gradle
Normal file
@@ -0,0 +1,271 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user