mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 13:09:00 +00:00

Cleaning out a lot of old junk from the code, and one thing lead to another... * Build is improved, now constructing docker images with 'jib'. Clean build went from 3 minutes to 50 seconds. * The ProcessService's spawning is smarter. Will now just spawn a java process instead of relying on the application plugin's generated outputs. * Project is migrated to GraalVM * gRPC clients are re-written with a neat fluent/functional style. e.g. ```channelPool.call(grpcStub::method) .async(executor) // <-- optional .run(argument); ``` This change is primarily to allow handling ManagedChannel errors, but it turned out to be a pretty clean API overall. * For now the project is all in on zookeeper * Service discovery is now based on APIs and not services. Theoretically means we could ship the same code either a monolith or a service mesh. * To this end, began modularizing a few of the APIs so that they aren't strongly "living" in a service. WIP! Missing is documentation and testing, and some more breaking apart of code.
86 lines
2.5 KiB
Groovy
86 lines
2.5 KiB
Groovy
plugins {
|
|
id 'java'
|
|
id("org.jetbrains.gradle.plugin.idea-ext") version "1.0"
|
|
id "io.freefair.lombok" version "8.3"
|
|
id "me.champeau.jmh" version "0.6.6"
|
|
|
|
// This is a workaround for a bug in the Jib plugin that causes it to stall randomly
|
|
// https://github.com/GoogleContainerTools/jib/issues/3347
|
|
id 'com.google.cloud.tools.jib' version '3.4.0' apply(false)
|
|
}
|
|
|
|
group 'marginalia'
|
|
version 'SNAPSHOT'
|
|
|
|
compileJava.options.encoding = "UTF-8"
|
|
compileTestJava.options.encoding = "UTF-8"
|
|
|
|
subprojects.forEach {it ->
|
|
// Enable preview features for the entire project
|
|
it.tasks.withType(JavaCompile).configureEach {
|
|
options.compilerArgs += ['--enable-preview']
|
|
}
|
|
it.tasks.withType(JavaExec).configureEach {
|
|
jvmArgs += ['--enable-preview']
|
|
}
|
|
it.tasks.withType(Test).configureEach {
|
|
jvmArgs += ['--enable-preview']
|
|
}
|
|
|
|
// Enable reproducible builds for the entire project
|
|
it.tasks.withType(AbstractArchiveTask).configureEach {
|
|
preserveFileTimestamps = false
|
|
reproducibleFileOrder = true
|
|
}
|
|
}
|
|
ext {
|
|
dockerImageBase='container-registry.oracle.com/graalvm/jdk:21@sha256:1fd33d4d4eba3a9e1a41a728e39ea217178d257694eea1214fec68d2ed4d3d9b'
|
|
}
|
|
allprojects {
|
|
apply plugin: 'java'
|
|
apply plugin: 'io.freefair.lombok'
|
|
dependencies {
|
|
implementation libs.lombok
|
|
testImplementation libs.lombok
|
|
annotationProcessor libs.lombok
|
|
|
|
lombok libs.lombok // prevent plugin from downgrading the version to something incompatible with '19
|
|
}
|
|
|
|
test {
|
|
maxHeapSize = "8G"
|
|
useJUnitPlatform()
|
|
}
|
|
|
|
tasks.register('fastTests', Test) {
|
|
maxHeapSize = "8G"
|
|
useJUnitPlatform {
|
|
excludeTags "slow"
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
idea {
|
|
module {
|
|
// Exclude these directories from being indexed by IntelliJ
|
|
// as they tend to bring the IDE to its knees and use up all
|
|
// Inotify spots in a hurry
|
|
excludeDirs.add(file("$projectDir/run/node-1"))
|
|
excludeDirs.add(file("$projectDir/run/node-2"))
|
|
excludeDirs.add(file("$projectDir/run/model"))
|
|
excludeDirs.add(file("$projectDir/run/dist"))
|
|
excludeDirs.add(file("$projectDir/run/db"))
|
|
excludeDirs.add(file("$projectDir/run/logs"))
|
|
excludeDirs.add(file("$projectDir/run/data"))
|
|
excludeDirs.add(file("$projectDir/run/conf"))
|
|
excludeDirs.add(file("$projectDir/run/test-data"))
|
|
}
|
|
}
|
|
java {
|
|
toolchain {
|
|
languageVersion.set(JavaLanguageVersion.of(21))
|
|
}
|
|
}
|
|
|