Files
ZoteCoreLoader/build.gradle
T
2026-07-05 08:29:35 +03:00

181 lines
6.3 KiB
Groovy

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")
}
}
}
}