Inceptum/buildSrc/src/main/kotlin/inceptum.java.gradle.kts

58 lines
1.7 KiB
Plaintext

plugins {
`java-library`
`maven-publish`
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(20))
}
}
repositories {
mavenCentral()
maven("https://maven.frohnmeyer-wds.de/artifacts")
}
dependencies {
compileOnly("org.jetbrains:annotations:23.0.0")
}
publishing {
repositories {
mavenLocal()
if (rootProject.extra["isPublic"] == true) {
maven("https://maven.frohnmeyer-wds.de/artifacts") {
name = "public"
credentials(PasswordCredentials::class) {
username = System.getenv()["MAVEN_NAME"]
password = System.getenv()["MAVEN_TOKEN"]
}
authentication {
create<BasicAuthentication>("basic")
}
}
}
}
}
afterEvaluate {
if (hasProperty("offline")) {
tasks.withType(JavaExec::class) {
environment("G_ORIGINAL_EXECUTABLE", executable ?: "java")
//TODO once we are not using a toolchain, just do executable(rootDir.resolve("buildSrc/java-offline"))
val originalMetadata = javaLauncher.get().metadata
val field = org.gradle.api.internal.provider.AbstractProperty::class.java.getDeclaredField("value")
field.isAccessible = true
val customLauncher = object: JavaLauncher {
override fun getMetadata(): JavaInstallationMetadata = originalMetadata
override fun getExecutablePath(): RegularFile = rootProject.layout.projectDirectory
.dir("buildSrc")
.file("java-offline")
}
field.set(javaLauncher, org.gradle.api.internal.provider.Providers.of(customLauncher))
}
}
}