178 lines
6.3 KiB
Groovy
178 lines
6.3 KiB
Groovy
apply plugin: 'application'
|
|
apply plugin: 'maven-publish'
|
|
|
|
group 'org.innercore.zotecoreloader'
|
|
version 'beta-1.1.1'
|
|
|
|
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/'
|
|
}
|
|
}
|
|
|
|
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'
|
|
// https://central.sonatype.com/artifact/org.mozilla/rhino/versions
|
|
// implementation group: 'org.mozilla', name: 'rhino', version: '1.7.14'
|
|
// 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")
|
|
}
|
|
}
|
|
}
|
|
} |