From 3469060b6b2bfd4d4fd736108c19118a38d22dca Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Thu, 27 Aug 2026 16:33:36 +0100 Subject: [PATCH] Update Gradle and dependencies - Fix *some* cross-project isolation issues. This appears to be the bare minimum to make the configuration cache happy. There is obviously a lot more work to do here. - Enable Configuration cache. - Fix some new checkstyle/errorprone/nullaway warnings. --- build.gradle.kts | 4 +- .../cc-tweaked.java-convention.gradle.kts | 2 +- .../cc-tweaked.mod-publishing.gradle.kts | 4 +- .../src/main/kotlin/cc-tweaked.mod.gradle.kts | 15 +++++-- config/checkstyle/checkstyle.xml | 4 +- gradle.properties | 1 + gradle/libs.versions.toml | 40 +++++++++--------- gradle/wrapper/gradle-wrapper.jar | Bin 48462 -> 47505 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 4 +- gradlew.bat | 4 +- projects/common-api/build.gradle.kts | 20 ++++++--- projects/common/build.gradle.kts | 16 +++---- .../command/arguments/ComputerSelector.java | 2 +- .../diskdrive/DiskDriveBlockEntity.java | 3 +- .../shared/util/TickScheduler.java | 2 +- projects/core-api/build.gradle.kts | 13 +----- projects/core/build.gradle.kts | 4 +- .../core/filesystem/MemoryMount.java | 2 +- projects/fabric/build.gradle.kts | 18 ++++---- projects/forge/build.gradle.kts | 16 +++---- projects/web/build.gradle.kts | 12 +++--- settings.gradle.kts | 2 + 23 files changed, 98 insertions(+), 92 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 296916aea..9bdc7f554 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,8 +16,8 @@ plugins { id("cc-tweaked") } -val isUnstable = project.properties["isUnstable"] == "true" -val modVersion: String by extra +val isUnstable = extra["isUnstable"] == "true" +val modVersion = extra["modVersion"] as String val mcVersion = project.extensions.getByType().named("libs") .findVersion("minecraft").get().toString() diff --git a/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts b/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts index f7eec2495..d1530ac06 100644 --- a/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts +++ b/buildSrc/src/main/kotlin/cc-tweaked.java-convention.gradle.kts @@ -21,7 +21,7 @@ plugins { id("net.fabricmc.fabric-loom-companion") } -val modVersion: String by extra +val modVersion = extra["modVersion"] as String val libs = project.extensions.getByType().named("libs") diff --git a/buildSrc/src/main/kotlin/cc-tweaked.mod-publishing.gradle.kts b/buildSrc/src/main/kotlin/cc-tweaked.mod-publishing.gradle.kts index 5f2451d0c..ed1b57b65 100644 --- a/buildSrc/src/main/kotlin/cc-tweaked.mod-publishing.gradle.kts +++ b/buildSrc/src/main/kotlin/cc-tweaked.mod-publishing.gradle.kts @@ -19,8 +19,8 @@ abstract class ModPublishingExtension { val modPublishing = project.extensions.create("modPublishing", ModPublishingExtension::class.java) -val isUnstable = project.properties["isUnstable"] == "true" -val modVersion: String by extra +val isUnstable = extra["isUnstable"] == "true" +val modVersion = extra["modVersion"] as String val mcVersion = project.extensions.getByType().named("libs") .findVersion("minecraft").get().toString() diff --git a/buildSrc/src/main/kotlin/cc-tweaked.mod.gradle.kts b/buildSrc/src/main/kotlin/cc-tweaked.mod.gradle.kts index f7b940709..d119451df 100644 --- a/buildSrc/src/main/kotlin/cc-tweaked.mod.gradle.kts +++ b/buildSrc/src/main/kotlin/cc-tweaked.mod.gradle.kts @@ -29,12 +29,19 @@ MinecraftConfigurations.createDerivedConfiguration(project, MinecraftConfigurati sourceSets.main { resources.srcDir("src/generated/resources") } sourceSets.named("examples") { resources.srcDir("src/examples/generatedResources") } +configurations.consumable("samplesElement") { + attributes { attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SAMPLES)) } + outgoing.artifacts(sourceSets.named("examples").map { it.allSource.sourceDirectories.files }) { + type = ArtifactTypeDefinition.DIRECTORY_TYPE + } +} + // Make sure our examples compile. tasks.check { dependsOn(tasks.named("compileExamplesJava")) } // Similar to java-test-fixtures, but tries to avoid putting the obfuscated jar on the classpath. -val testFixtures by sourceSets.creating { +val testFixtures = sourceSets.create("testFixtures") { compileClasspath += main.compileClasspath + client.compileClasspath } @@ -48,10 +55,10 @@ dependencies { add(testFixtures.apiConfigurationName, libs.findBundle("test").get()) // Consumers of this project already have the common and client classes on the classpath, so it's fine for these // to be compile-only. - add(testFixtures.compileOnlyApiConfigurationName, commonClasses(project)) - add(testFixtures.compileOnlyApiConfigurationName, clientClasses(project)) + add(testFixtures.compileOnlyApiConfigurationName, commonClasses(project())) + add(testFixtures.compileOnlyApiConfigurationName, clientClasses(project())) - testImplementation(testFixtures(project)) + testImplementation(testFixtures(project())) } kotlin.compilerOptions.jvmTarget = CCTweakedPlugin.KOTLIN_TARGET diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 8321fa26c..f3c40377e 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -96,9 +96,7 @@ SPDX-License-Identifier: MPL-2.0 - - - + diff --git a/gradle.properties b/gradle.properties index 8a492cbf0..c43db076f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,6 +4,7 @@ org.gradle.jvmargs=-Xmx3G -Dfile.encoding=UTF-8 org.gradle.parallel=true +org.gradle.configuration-cache=true kotlin.stdlib.default.dependency=false kotlin.jvm.target.validation.mode=error diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fb74a23ff..b5f9d19e4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,17 +23,17 @@ netty = "4.1.82.Final" slf4j = "2.0.1" # Core dependencies (independent of Minecraft) -asm = "9.9.1" +asm = "9.10.1" autoService = "1.1.1" -checkerFramework = "4.0.0" +checkerFramework = "4.2.2" cobalt = { strictly = "0.9.9" } commonsCli = "1.11.0" jetbrainsAnnotations = "26.1.0" -jspecify = "1.0.0" +jspecify = "1.0.1" jzlib = "1.1.3" -kotlin = "2.3.21" -kotlin-coroutines = "1.10.2" -nightConfig = "3.8.4" +kotlin = "2.4.10" +kotlin-coroutines = "1.11.0" +nightConfig = "3.9.0" # Minecraft mods emi = "1.0.8+1.20.1" @@ -51,30 +51,30 @@ create-fabric = "6.0.7.0+mc1.20.1-build.1716" # Testing hamcrest = "3.0" -jqwik = "1.9.3" -junit = "6.0.3" -junitPlatform = "6.0.3" +jqwik = "1.10.1" +junit = "6.1.3" +junitPlatform = "6.1.3" jmh = "1.37" # Build tools cctJavadoc = "1.9.0" -checkstyle = "13.4.1" -errorProne-core = "2.49.0" +checkstyle = "14.0.0" +errorProne-core = "2.50.0" errorProne-plugin = "4.3.0" -fabric-loom = "1.17.11" +fabric-loom = "1.17.20" githubRelease = "2.5.2" -gradleVersions = "0.54.0" +gradleVersions = "0.61.0" ideaExt = "1.3" illuaminate = "0.1.0-83-g1131f68" -lwjgl = "3.4.1" +lwjgl = "3.4.3" minotaur = "2.8.7" modDevGradle = "2.0.141" -nullAway = "0.13.4" -shadow = "9.4.1" -spotless = "8.4.0" +nullAway = "0.14.0" +shadow = "9.6.1" +spotless = "8.10.0" teavm = "0.15.0" -vanillaExtract = "0.3.1" -versionCatalogUpdate = "1.1.0" +vanillaExtract = "0.3.2" +versionCatalogUpdate = "1.1.1" [libraries] # Normal dependencies @@ -169,7 +169,7 @@ yarn = { module = "net.fabricmc:yarn", version.ref = "yarn" } [plugins] githubRelease = { id = "com.github.breadmoirai.github-release", version.ref = "githubRelease" } -gradleVersions = { id = "com.github.ben-manes.versions", version.ref = "gradleVersions" } +gradleVersions = { id = "io.github.ben-manes.versions", version.ref = "gradleVersions" } kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } versionCatalogUpdate = { id = "nl.littlerobots.version-catalog-update", version.ref = "versionCatalogUpdate" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b1b8ef56b44f16b14dc800fa8103a6d89abb526f..eddabd2eef8d94a5437d6168ff9c87a78ff725b3 100644 GIT binary patch delta 39079 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

=brW3s8Tj~OAF81ZqZ-H*%#PvF5vG> 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b52fb7e71..ad7845be3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 diff --git a/gradlew b/gradlew index b9bb139f7..249efbb03 100755 --- a/gradlew +++ b/gradlew @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: diff --git a/gradlew.bat b/gradlew.bat index 24c62d56f..a51ec4f58 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,7 +19,7 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## @@ -72,7 +72,7 @@ echo location of your Java installation. 1>&2 -@rem Execute Gradle +@rem Execute gradlew @rem endlocal doesn't take effect until after the line is parsed and variables are expanded @rem which allows us to clear the local environment before executing the java command endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel diff --git a/projects/common-api/build.gradle.kts b/projects/common-api/build.gradle.kts index 961974e61..9059f4de8 100644 --- a/projects/common-api/build.gradle.kts +++ b/projects/common-api/build.gradle.kts @@ -15,11 +15,21 @@ java { withJavadocJar() } -dependencies { - api(project(":core-api")) +val snippetSourcesDependencies = configurations.dependencyScope("snippetSourcesDependencies") +val snippetSources = configurations.resolvable("snippetSources") { + extendsFrom(snippetSourcesDependencies) + attributes { attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SAMPLES)) } } -val javadocOverview by tasks.registering(Copy::class) { +dependencies { + api(project(":core-api")) + + "snippetSourcesDependencies"(project(":common")) + "snippetSourcesDependencies"(project(":fabric")) + "snippetSourcesDependencies"(project(":forge")) +} + +val javadocOverview = tasks.register("javadocOverview") { from("src/overview.html") into(layout.buildDirectory.dir(name)) @@ -64,9 +74,7 @@ tasks.javadoc { """.trimIndent(), ) - val snippetSources = listOf(":common", ":fabric", ":forge").flatMap { - project(it).sourceSets["examples"].allSource.sourceDirectories - } + val snippetSources = snippetSources.get().files.toList() inputs.files(snippetSources) addPathOption("-snippet-path").value = snippetSources } diff --git a/projects/common/build.gradle.kts b/projects/common/build.gradle.kts index d895d12aa..88989ad7c 100644 --- a/projects/common/build.gradle.kts +++ b/projects/common/build.gradle.kts @@ -63,15 +63,13 @@ illuaminate { version = libs.versions.illuaminate } -val luaJavadoc by tasks.registering(Javadoc::class) { +val luaJavadoc = tasks.register("luaJavadoc") { description = "Generates documentation for Java-side Lua functions." group = JavaBasePlugin.DOCUMENTATION_GROUP - val sourceSets = listOf(sourceSets.main.get(), project(":core").sourceSets.main.get()) - for (sourceSet in sourceSets) { - source(sourceSet.java) - classpath += sourceSet.compileClasspath - } + source(sourceSets.main.get().java.sourceDirectories) + source(project.layout.projectDirectory.dir("../core/src/main/java")) + classpath = sourceSets.main.get().compileClasspath + sourceSets.main.get().runtimeClasspath destinationDir = layout.buildDirectory.dir("docs/luaJavadoc").get().asFile @@ -84,7 +82,7 @@ val luaJavadoc by tasks.registering(Javadoc::class) { javadocTool = javaToolchains.javadocToolFor { languageVersion = CCTweakedPlugin.JDK_VERSION } } -val lintLua by tasks.registering(IlluaminateExec::class) { +val lintLua = tasks.register("lintLua") { group = JavaBasePlugin.VERIFICATION_GROUP description = "Lint Lua (and Lua docs) with illuaminate" @@ -118,11 +116,11 @@ fun MergeTrees.configureForDatagen(source: SourceSet, outputFolder: String) { } } -val runData by tasks.registering(MergeTrees::class) { +val runData = tasks.register("runData") { configureForDatagen(sourceSets.main.get(), "src/generated/resources") } -val runExampleData by tasks.registering(MergeTrees::class) { +val runExampleData = tasks.register("runExampleData") { configureForDatagen(sourceSets.examples.get(), "src/examples/generatedResources") } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java b/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java index 298aecc7c..cd934a137 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/command/arguments/ComputerSelector.java @@ -336,7 +336,7 @@ public record ComputerSelector( private final Message tooltip; - Option(String name, Parser parser, SuggestionProvider suggest) { + private Option(String name, Parser parser, SuggestionProvider suggest) { this.name = name; this.parser = parser; this.suggest = suggest; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java index 4e3dad922..cf8014c56 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDriveBlockEntity.java @@ -10,6 +10,7 @@ import dan200.computercraft.api.filesystem.WritableMount; import dan200.computercraft.api.media.IMedia; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; +import dan200.computercraft.core.util.Nullability; import dan200.computercraft.shared.common.AbstractContainerBlockEntity; import dan200.computercraft.shared.network.client.PlayRecordClientMessage; import dan200.computercraft.shared.network.server.ServerNetworking; @@ -271,7 +272,7 @@ public final class DiskDriveBlockEntity extends AbstractContainerBlockEntity { void detach(IComputerAccess computer) { synchronized (this) { - unmountDisk(computer, computers.remove(computer)); + unmountDisk(computer, Nullability.assertNonNull(computers.remove(computer))); } } diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/TickScheduler.java b/projects/common/src/main/java/dan200/computercraft/shared/util/TickScheduler.java index 79b891c48..56c81b23f 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/TickScheduler.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/TickScheduler.java @@ -131,7 +131,7 @@ public final class TickScheduler { * As such, it should be unique per {@link BlockEntity} instance to avoid it being queued multiple times. */ public static class Token { - static final AtomicReferenceFieldUpdater STATE = AtomicReferenceFieldUpdater.newUpdater(Token.class, State.class, "$state"); + private static final AtomicReferenceFieldUpdater STATE = AtomicReferenceFieldUpdater.newUpdater(Token.class, State.class, "$state"); final BlockEntity owner; diff --git a/projects/core-api/build.gradle.kts b/projects/core-api/build.gradle.kts index 9d75f4b0d..8f58e2d4a 100644 --- a/projects/core-api/build.gradle.kts +++ b/projects/core-api/build.gradle.kts @@ -8,20 +8,11 @@ plugins { id("cc-tweaked") } -// Due to the slightly circular nature of our API, add the main API jars to the javadoc classpath. -val docApi by configurations.registering { - isTransitive = false -} - dependencies { compileOnlyApi(libs.bundles.annotations) - - "docApi"(project(":common-api")) } -tasks.javadoc { - // Depend on the common API when publishing javadoc - classpath += docApi.get() -} +// Don't build Javadoc here. We build combined docs in the common-api project. +tasks.javadoc { isEnabled = false } cct.linters(minecraft = false, loader = null) diff --git a/projects/core/build.gradle.kts b/projects/core/build.gradle.kts index 5c29a5a78..4afebd1fd 100644 --- a/projects/core/build.gradle.kts +++ b/projects/core/build.gradle.kts @@ -16,7 +16,7 @@ plugins { id("cc-tweaked") } -val modVersion: String by extra +val modVersion = extra["modVersion"] as String dependencies { api(project(":core-api")) @@ -53,7 +53,7 @@ tasks.test { systemProperty("cct.test-files", layout.buildDirectory.dir("tmp/testFiles").getAbsolutePath()) } -val checkChangelog by tasks.registering(cc.tweaked.gradle.CheckChangelog::class) { +val checkChangelog = tasks.register("checkChangelog") { version = modVersion whatsNew = file("src/main/resources/data/computercraft/lua/rom/help/whatsnew.md") changelog = file("src/main/resources/data/computercraft/lua/rom/help/changelog.md") diff --git a/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java b/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java index 1bacb72c4..b9f0946d2 100644 --- a/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java +++ b/projects/core/src/main/java/dan200/computercraft/core/filesystem/MemoryMount.java @@ -145,7 +145,7 @@ public final class MemoryMount extends AbstractInMemoryMount("validateMixinNames") { source(sourceSets.main.get().output) source(sourceSets.client.get().output) source(sourceSets.testMod.get().output) @@ -251,7 +251,7 @@ val runGametest = tasks.named("runGametest") { cct.jacoco(runGametest) tasks.check { dependsOn(runGametest) } -val runGametestClient by tasks.registering(ClientJavaExec::class) { +val runGametestClient = tasks.register("runGametestClient") { description = "Runs client-side gametests with no mods" copyFrom("runTestClient") @@ -259,7 +259,7 @@ val runGametestClient by tasks.registering(ClientJavaExec::class) { } cct.jacoco(runGametestClient) -val runGametestClientWithSodium by tasks.registering(ClientJavaExec::class) { +val runGametestClientWithSodium = tasks.register("runGametestClientWithSodium") { description = "Runs client-side gametests with Sodium" copyFrom("runTestClient") @@ -268,7 +268,7 @@ val runGametestClientWithSodium by tasks.registering(ClientJavaExec::class) { } cct.jacoco(runGametestClientWithSodium) -val runGametestClientWithIris by tasks.registering(ClientJavaExec::class) { +val runGametestClientWithIris = tasks.register("runGametestClientWithIris") { description = "Runs client-side gametests with Iris" copyFrom("runTestClient") diff --git a/projects/forge/build.gradle.kts b/projects/forge/build.gradle.kts index 3314e475b..fb583bff3 100644 --- a/projects/forge/build.gradle.kts +++ b/projects/forge/build.gradle.kts @@ -11,7 +11,7 @@ plugins { id("cc-tweaked.mod-publishing") } -val modVersion: String by extra +val modVersion = extra["modVersion"] as String val allProjects = listOf(":core-api", ":core", ":forge-api").map { evaluationDependsOn(it) } cct { @@ -20,26 +20,26 @@ cct { } legacyForge { - val computercraft by mods.registering { + val computercraft = mods.register("computercraft") { cct.sourceDirectories.get().forEach { if (it.classes) sourceSet(it.sourceSet) } } - val computercraftDatagen by mods.registering { + val computercraftDatagen = mods.register("computercraftDatagen") { cct.sourceDirectories.get().forEach { if (it.classes) sourceSet(it.sourceSet) } sourceSet(sourceSets.datagen.get()) } - val testMod by mods.registering { + val testMod = mods.register("testMod") { sourceSet(sourceSets.testMod.get()) sourceSet(sourceSets.testFixtures.get()) sourceSet(project(":core").sourceSets["testFixtures"]) } - val exampleMod by mods.registering { + val exampleMod = mods.register("exampleMod") { sourceSet(sourceSets.examples.get()) } @@ -131,7 +131,7 @@ configurations { additionalRuntimeClasspath { extendsFrom(jarJar.get()) } - val testAdditionalRuntimeClasspath by registering { + val testAdditionalRuntimeClasspath = register("testAdditionalRuntimeClasspath") { isCanBeResolved = true isCanBeConsumed = false // Prevent ending up with multiple versions of libraries on the classpath. @@ -144,7 +144,7 @@ configurations { // Declare a configuration for projects which are on the compile and runtime classpath, but not treated as // dependencies. This is used for our local projects. - val localImplementation by registering { + val localImplementation = register("localImplementation") { isCanBeResolved = false isCanBeConsumed = false } @@ -234,7 +234,7 @@ val runGametest = tasks.named("runGametest") { cct.jacoco(runGametest) tasks.check { dependsOn(runGametest) } -val runGametestClient by tasks.registering(ClientJavaExec::class) { +val runGametestClient = tasks.register("runGametestClient") { description = "Runs client-side gametests with no mods" copyFromForge("runTestClient") tags("client") diff --git a/projects/web/build.gradle.kts b/projects/web/build.gradle.kts index 1f2330ac2..0840a9801 100644 --- a/projects/web/build.gradle.kts +++ b/projects/web/build.gradle.kts @@ -10,7 +10,7 @@ plugins { id("cc-tweaked.illuaminate") } -val modVersion: String by extra +val modVersion = extra["modVersion"] as String node { projectRoot = rootProject.projectDir @@ -37,7 +37,7 @@ dependencies { "builderImplementation"(libs.asm.commons) } -val compileTeaVM by tasks.registering(JavaExec::class) { +val compileTeaVM = tasks.register("compileTeaVM") { group = LifecycleBasePlugin.BUILD_GROUP description = "Generate our classes and resources files" @@ -66,7 +66,7 @@ val compileTeaVM by tasks.registering(JavaExec::class) { javaLauncher = project.javaToolchains.launcherFor { languageVersion = java.toolchain.languageVersion } } -val rollup by tasks.registering(cc.tweaked.gradle.NpxExecToDir::class) { +val rollup = tasks.register("rollup") { group = LifecycleBasePlugin.BUILD_GROUP description = "Bundles JS into rollup" @@ -86,7 +86,7 @@ val rollup by tasks.registering(cc.tweaked.gradle.NpxExecToDir::class) { args = listOf("rollup", "--config", "rollup.config.js") + if (minify) emptyList() else listOf("--configDebug") } -val illuaminateDocs by tasks.registering(cc.tweaked.gradle.IlluaminateExecToDir::class) { +val illuaminateDocs = tasks.register("illuaminateDocs") { group = JavaBasePlugin.DOCUMENTATION_GROUP description = "Generates docs using Illuaminate" @@ -106,7 +106,7 @@ val illuaminateDocs by tasks.registering(cc.tweaked.gradle.IlluaminateExecToDir: workingDir = rootProject.projectDir } -val htmlTransform by tasks.registering(cc.tweaked.gradle.NpxExecToDir::class) { +val htmlTransform = tasks.register("htmlTransform") { group = JavaBasePlugin.DOCUMENTATION_GROUP description = "Post-processes documentation to statically render some dynamic content." @@ -130,7 +130,7 @@ val htmlTransform by tasks.registering(cc.tweaked.gradle.NpxExecToDir::class) { ) } -val docWebsite by tasks.registering(Copy::class) { +val docWebsite = tasks.register("docWebsite") { group = JavaBasePlugin.DOCUMENTATION_GROUP description = "Assemble docs and assets together into the documentation website." duplicatesStrategy = DuplicatesStrategy.FAIL diff --git a/settings.gradle.kts b/settings.gradle.kts index 1c9fb6ba6..d5090c0d3 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -30,6 +30,8 @@ plugins { id("org.gradle.toolchains.foojay-resolver-convention") version("1.0.0") } +enableFeaturePreview("STABLE_CONFIGURATION_CACHE") + rootProject.name = "cc-tweaked" include(":core-api")