apply plugin: 'application' apply plugin: 'maven-publish' group 'org.innercore.zotecoreloader' version 'beta-1.2.0' application { mainClass = 'com.reider745.Main' } repositories { mavenCentral() maven { url 'https://repo.lanink.com/repository/maven-public/' } maven { url 'https://repo.opencollab.dev/maven-releases/' } maven { url 'https://repo.opencollab.dev/maven-snapshots/' } maven { name "innercoreSnapshots" url "https://maven.inner-core.org/snapshots" } } configurations { // Isolated classpath for the forked codegen JVM (the :codegen subproject + JavaParser). codegenClasspath } dependencies { codegenClasspath project(':codegen') // https://repo.lanink.cn/#browse/browse:maven-public:cn/nukkit/Nukkit/MOT-SNAPSHOT /*implementation (group: 'cn.nukkit', name: 'Nukkit', version: 'MOT-20240213.074103-139') { exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl' }*/ // https://mvnrepository.com/artifact/org.jetbrains/annotations implementation 'org.jetbrains:annotations:26.0.1' // https://central.sonatype.com/artifact/com.google.code.gson/gson/versions implementation group: 'com.google.code.gson', name: 'gson', version: '2.7' implementation group: 'org.mozilla.innercore', name: 'rhino', version: '1.7.15.1' // https://central.sonatype.com/artifact/org.json/json/versions implementation group: 'org.json', name: 'json', version: '20231013' compileOnly("org.projectlombok:lombok:1.18.44") annotationProcessor("org.projectlombok:lombok:1.18.44") implementation fileTree (dir: 'iclibs', include: '*.jar') implementation fileTree (dir: 'iclibs/dex2jar', include: '*.jar') testImplementation(platform("org.junit:junit-bom:5.10.0")) testImplementation("org.junit.jupiter:junit-jupiter") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } tasks.test { dependsOn 'generateApiBindingsTest' useJUnitPlatform() } def targetJavaVersion = 17 java { def javaVersion = JavaVersion.toVersion(targetJavaVersion) if (JavaVersion.current() < javaVersion) { toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) } withSourcesJar() } jar { duplicatesStrategy 'exclude' manifest { attributes 'Main-Class': application.mainClass } from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) } } run { workingDir 'target' standardInput System.in } // Generates JS-binding base classes (com.zhekasmirnov.innercore.api.gen.*BindGenBase) // from @ApiBinding-annotated sources, before compilation (the hand-written module classes // extend the generated bases). The generator lives in the :codegen subproject and runs in a // forked JVM so its JavaParser dependency stays isolated from Gradle's bundled copy. def apiGenSourceRoot = file('src/main/java/org/innercore') def apiGenOutputDir = layout.projectDirectory.dir('src/main/java/com/zhekasmirnov/innercore/api/gen') def apiGenSourceTestRoot = file('src/test/java/org/innercore') def apiGenOutputTestDir = layout.projectDirectory.dir('src/test/java/com/zhekasmirnov/innercore/api/gen') tasks.register('generateApiBindingsTest', JavaExec) { group = 'codegen' description = 'Generates JS binding base classes from @ApiBinding-annotated sources.' javaLauncher = javaToolchains.launcherFor { def javaVersion = JavaVersion.toVersion(targetJavaVersion) if (JavaVersion.current() < javaVersion) { languageVersion = JavaLanguageVersion.of(targetJavaVersion) } } classpath = configurations.codegenClasspath mainClass = 'org.innercore.codegen.Codegen' args 'com.zhekasmirnov.innercore.api.gen', apiGenOutputTestDir.asFile.absolutePath, apiGenSourceTestRoot.absolutePath inputs.files(fileTree(apiGenSourceRoot) { include '**/*.java' }).withPropertyName('apiBindingSources') outputs.dir(apiGenOutputDir).withPropertyName('apiBindingOutput') } tasks.register('generateApiBindings', JavaExec) { group = 'codegen' description = 'Generates JS binding base classes from @ApiBinding-annotated sources.' javaLauncher = javaToolchains.launcherFor { def javaVersion = JavaVersion.toVersion(targetJavaVersion) if (JavaVersion.current() < javaVersion) { languageVersion = JavaLanguageVersion.of(targetJavaVersion) } } classpath = configurations.codegenClasspath mainClass = 'org.innercore.codegen.Codegen' args 'com.zhekasmirnov.innercore.api.gen', apiGenOutputDir.asFile.absolutePath, apiGenSourceRoot.absolutePath inputs.files(fileTree(apiGenSourceRoot) { include '**/*.java' }).withPropertyName('apiBindingSources') outputs.dir(apiGenOutputDir).withPropertyName('apiBindingOutput') } tasks.named('compileJava') { dependsOn 'generateApiBindings' } task rebuildAndroidStubs(type: JavaExec, dependsOn: classes) { javaLauncher = javaToolchains.launcherFor { def javaVersion = JavaVersion.toVersion(targetJavaVersion) if (JavaVersion.current() < javaVersion) { languageVersion = JavaLanguageVersion.of(targetJavaVersion) } } classpath = sourceSets.main.runtimeClasspath mainClass = 'com.reider745.api.hooks.instrument.RebuildJavadoc' args '.todo/android.jar', 'iclibs/android.jar', 'proxy' } task rebuildZoteStubs(type: JavaExec, dependsOn: jar) { javaLauncher = javaToolchains.launcherFor { def javaVersion = JavaVersion.toVersion(targetJavaVersion) if (JavaVersion.current() < javaVersion) { languageVersion = JavaLanguageVersion.of(targetJavaVersion) } } classpath = sourceSets.main.runtimeClasspath mainClass = 'com.reider745.api.hooks.RebuildJavadoc' args "build/libs/${project.name}-${project.version}.jar", ".todo/${project.name}-${project.version}.jar" } tasks.jar { archiveFileName.set("${project.name}-${project.version}.jar") } publishing { publications { maven(MavenPublication) { from components.java } } repositories { maven { name = "innercore-releases" url = uri("https://maven.inner-core.org/releases") credentials { username = System.getenv("MAVEN_USERNAME") password = System.getenv("MAVEN_PASSWORD") } } } }