From 62ce3eeb639bfd14ca426f1c9cb2f03c4a349387 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Mon, 9 Sep 2024 22:25:38 +0200 Subject: [PATCH 1/4] feat: config cache support --- gradle.properties | 4 ++++ gradle/wrapper/gradle-wrapper.properties | 2 +- refinedarchitect-plugin/build.gradle.kts | 5 +++-- refinedarchitect-versioning/build.gradle.kts | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index a8d260d..e5fbf02 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,6 @@ # Gradle org.gradle.jvmargs=-Xmx1G +org.gradle.configureondemand=true +org.gradle.caching=true +org.gradle.configuration-cache=true +org.gradle.configuration-cache.problems=warn diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a441313..9355b41 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-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/refinedarchitect-plugin/build.gradle.kts b/refinedarchitect-plugin/build.gradle.kts index cc4c7c4..0589970 100644 --- a/refinedarchitect-plugin/build.gradle.kts +++ b/refinedarchitect-plugin/build.gradle.kts @@ -25,8 +25,8 @@ repositories { } dependencies { - implementation("net.neoforged:moddev-gradle:2.0.5-beta") - implementation("fabric-loom:fabric-loom.gradle.plugin:1.7-SNAPSHOT") + implementation("net.neoforged:moddev-gradle:2.0.27-beta") + implementation("fabric-loom:fabric-loom.gradle.plugin:1.8.0-alpha.9") implementation("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:1.1.8") implementation("info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.15.0") implementation("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:4.4.1.3373") @@ -44,5 +44,6 @@ publishing { password = System.getenv("GITHUB_TOKEN") } } + mavenLocal() } } diff --git a/refinedarchitect-versioning/build.gradle.kts b/refinedarchitect-versioning/build.gradle.kts index e2348be..42cf11c 100644 --- a/refinedarchitect-versioning/build.gradle.kts +++ b/refinedarchitect-versioning/build.gradle.kts @@ -51,6 +51,7 @@ publishing { password = System.getenv("GITHUB_TOKEN") } } + mavenLocal() } publications { create("maven") { From c434b6ffbfbbe5ccadf3672f7065ca6f835c5c95 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Mon, 9 Sep 2024 22:45:26 +0200 Subject: [PATCH 2/4] build: change to new resource generation system on neoforge See https://github.com/neoforged/MDK/pull/97/files If we don't do this it doesn't replace version numbers anymore for some reason. --- .../src/main/kotlin/FabricExtension.kt | 6 ++++- .../src/main/kotlin/NeoForgeExtension.kt | 26 ++++++++++++++----- .../main/kotlin/refinedarchitect.gradle.kts | 8 ------ 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/refinedarchitect-plugin/src/main/kotlin/FabricExtension.kt b/refinedarchitect-plugin/src/main/kotlin/FabricExtension.kt index 08b29e8..30df773 100644 --- a/refinedarchitect-plugin/src/main/kotlin/FabricExtension.kt +++ b/refinedarchitect-plugin/src/main/kotlin/FabricExtension.kt @@ -1,6 +1,5 @@ import net.fabricmc.loom.api.LoomGradleExtensionAPI import org.gradle.api.Project -import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.tasks.compile.JavaCompile import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.get @@ -56,6 +55,11 @@ open class FabricExtension(private val project: Project) : BaseExtension(project source(project.configurations["commonJava"]) } project.tasks.withType().configureEach { + val properties = mapOf("version" to project.version) + inputs.properties(properties) + filesMatching(listOf("fabric.mod.json")) { + expand(properties) + } dependsOn(project.configurations["commonResources"]) from(project.configurations["commonResources"]) } diff --git a/refinedarchitect-plugin/src/main/kotlin/NeoForgeExtension.kt b/refinedarchitect-plugin/src/main/kotlin/NeoForgeExtension.kt index bbb94cd..e9319e2 100644 --- a/refinedarchitect-plugin/src/main/kotlin/NeoForgeExtension.kt +++ b/refinedarchitect-plugin/src/main/kotlin/NeoForgeExtension.kt @@ -4,9 +4,10 @@ import org.gradle.api.tasks.compile.JavaCompile import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.withType import org.gradle.language.jvm.tasks.ProcessResources -import net.neoforged.moddevgradle.dsl.NeoForgeExtension as NfExtension +import net.neoforged.moddevgradle.dsl.NeoForgeExtension as NeoForge open class NeoForgeExtension(private val project: Project) : BaseExtension(project) { var modId: String? = null @@ -17,7 +18,16 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje project.configurations["commonJava"].isCanBeConsumed = modId == null project.configurations["commonResources"].isCanBeResolved = true project.configurations["commonResources"].isCanBeConsumed = modId == null - project.extensions.getByType().apply { + val generateModMetadata = project.tasks.register("generateModMetadata", ProcessResources::class) { + val properties = mapOf("version" to project.version) + inputs.properties(properties) + expand(properties) + from("src/main/templates") + into("build/generated/sources/modMetadata") + } + sourceSets["main"].resources.srcDir(generateModMetadata) + sourceSets["main"].resources.srcDirs.add(project.file("src/generated/resources")) + project.extensions.getByType().apply { version.set(neoForgeVersion) addModdingDependenciesTo(sourceSets["test"]) if (modId != null) { @@ -40,15 +50,17 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje minecraftVersion.set(parchmentMcVersion) mappingsVersion.set(parchmentVersion) } + ideSyncTask(generateModMetadata) } - sourceSets["main"].resources.srcDirs.add(project.file("src/generated/resources")) project.tasks.withType().configureEach { dependsOn(project.configurations["commonJava"]) source(project.configurations["commonJava"]) } project.tasks.withType().configureEach { - dependsOn(project.configurations["commonResources"]) - from(project.configurations["commonResources"]) + if (name != "generateModMetadata") { + dependsOn(project.configurations["commonResources"]) + from(project.configurations["commonResources"]) + } } project.tasks.withType().configureEach { from("../LICENSE.md") @@ -58,7 +70,7 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje fun gameTests() { project.dependencies.add("testImplementation", "net.neoforged:testframework:${neoForgeVersion}") val sourceSets = project.extensions.getByType().sourceSets - project.extensions.getByType().apply { + project.extensions.getByType().apply { runs { register("gameTestServer") { type.set("gameTestServer") @@ -74,7 +86,7 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje } fun dataGeneration(sourceProject: Project = project) { - project.extensions.getByType().apply { + project.extensions.getByType().apply { runs { create("data") { data() diff --git a/refinedarchitect-plugin/src/main/kotlin/refinedarchitect.gradle.kts b/refinedarchitect-plugin/src/main/kotlin/refinedarchitect.gradle.kts index 524b3bb..21193e7 100644 --- a/refinedarchitect-plugin/src/main/kotlin/refinedarchitect.gradle.kts +++ b/refinedarchitect-plugin/src/main/kotlin/refinedarchitect.gradle.kts @@ -52,14 +52,6 @@ checkstyle { toolVersion = "10.17.0" } -tasks.withType { - inputs.property("version", project.version) - - filesMatching(listOf("fabric.mod.json", "META-INF/neoforge.mods.toml")) { - expand("version" to project.version) - } -} - artifacts { add("commonJava", sourceSets["main"].java.sourceDirectories.singleFile) add("commonResources", sourceSets["main"].resources.sourceDirectories.singleFile) From f0738f7f3540ff9f1de77e7d9e286845269f6d74 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Tue, 10 Sep 2024 15:54:17 +0200 Subject: [PATCH 3/4] build: update publishing plugin To https://github.com/modmuss50/mod-publish-plugin Because minotaur plugin doesn't support the config cache. --- .github/workflows/publish-release.yml | 4 +- CHANGELOG.md | 8 ++ refinedarchitect-plugin/build.gradle.kts | 4 +- .../src/main/kotlin/BaseExtension.kt | 98 ++++++++++--------- refinedarchitect-versioning/build.gradle.kts | 1 - 5 files changed, 63 insertions(+), 52 deletions(-) diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 6aded04..053345e 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -162,7 +162,7 @@ jobs: - name: Setup Java uses: refinedmods/refinedarchitect/.github/actions/setup-java@develop - name: Deploy to CurseForge - run: ./gradlew publishCurseForge + run: ./gradlew publishCurseforge deploy-modrinth: name: Deploy to Modrinth @@ -179,7 +179,7 @@ jobs: - name: Setup Java uses: refinedmods/refinedarchitect/.github/actions/setup-java@develop - name: Deploy to Modrinth - run: ./gradlew modrinth + run: ./gradlew publishModrinth announce-discord: name: Announce to Discord diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d8cb24..c9d66c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added + +- Support for the Gradle config cache. + +### Changed + +- The CurseForge and Modrinth publishing has been updated to use modmuss' mod-publish-plugin. + ## [0.18.0] - 2024-09-09 ### Fixed diff --git a/refinedarchitect-plugin/build.gradle.kts b/refinedarchitect-plugin/build.gradle.kts index 0589970..b21b6ae 100644 --- a/refinedarchitect-plugin/build.gradle.kts +++ b/refinedarchitect-plugin/build.gradle.kts @@ -30,8 +30,7 @@ dependencies { implementation("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:1.1.8") implementation("info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.15.0") implementation("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:4.4.1.3373") - implementation("net.darkhax.curseforgegradle:CurseForgeGradle:1.1.18") - implementation("com.modrinth.minotaur:Minotaur:2.8.7") + implementation("me.modmuss50:mod-publish-plugin:0.7.3") } publishing { @@ -44,6 +43,5 @@ publishing { password = System.getenv("GITHUB_TOKEN") } } - mavenLocal() } } diff --git a/refinedarchitect-plugin/src/main/kotlin/BaseExtension.kt b/refinedarchitect-plugin/src/main/kotlin/BaseExtension.kt index ab7469d..0533f1d 100644 --- a/refinedarchitect-plugin/src/main/kotlin/BaseExtension.kt +++ b/refinedarchitect-plugin/src/main/kotlin/BaseExtension.kt @@ -1,13 +1,15 @@ -import com.modrinth.minotaur.Minotaur -import com.modrinth.minotaur.ModrinthExtension import info.solidsoft.gradle.pitest.PitestPlugin import info.solidsoft.gradle.pitest.PitestPluginExtension -import net.darkhax.curseforgegradle.TaskPublishCurseForge +import me.modmuss50.mpp.ModPublishExtension +import me.modmuss50.mpp.MppPlugin +import me.modmuss50.mpp.ReleaseType +import net.fabricmc.loom.task.RemapJarTask import org.gradle.api.Action import org.gradle.api.Project import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.tasks.testing.Test +import org.gradle.jvm.tasks.Jar import org.gradle.kotlin.dsl.* import org.sonarqube.gradle.SonarExtension import org.sonarqube.gradle.SonarQubePlugin @@ -25,49 +27,50 @@ open class BaseExtension(private val project: Project) { if (options.maven == true) { enableMavenPublishing() } - options.curseForge?.let { enableCurseForgePublishing(it) } - options.modrinth?.let { enableModrinthPublishing(it) } - } - - private fun enableCurseForgePublishing(projectId: String) { - project.tasks.register("publishCurseForge") { - apiToken = System.getenv("CURSEFORGE_TOKEN") - val isNeoForge = project.pluginManager.hasPlugin("net.neoforged.moddev") - val mainFile = upload(projectId, project.tasks.getByName(if (isNeoForge) "jar" else "remapJar")) - mainFile.releaseType = if (project.version.toString().contains("beta")) "beta" else if (project.version.toString().contains("alpha")) "alpha" else "release" - mainFile.changelog = System.getenv("RELEASE_CHANGELOG") - mainFile.changelogType = "markdown" - mainFile.displayName = "v" + project.version.toString() - mainFile.addGameVersion(mcVersion) - // https://github.com/refinedmods/refinedarchitect/issues/149 - if (isNeoForge) { - mainFile.addModLoader("NeoForge") - } else { - mainFile.addRequirement("fabric-api") - } - } - } - - private fun enableModrinthPublishing(projId: String) { - project.plugins.apply(Minotaur::class.java) - val isNeoForge = project.pluginManager.hasPlugin("net.neoforged.moddev") - project.extensions.getByType().apply { - token.set(System.getenv("MODRINTH_TOKEN")) - projectId.set(projId) - uploadFile = project.tasks.getByName(if (isNeoForge) "jar" else "remapJar") - versionType.set(if (project.version.toString().contains("beta")) "beta" else if (project.version.toString().contains("alpha")) "alpha" else "release") - versionNumber.set(project.version.toString()) - versionName.set("v" + project.version) - // https://github.com/refinedmods/refinedarchitect/issues/149 - if (isNeoForge) { - loaders.add("neoforge") - gameVersions.add(mcVersion) - } else { - dependencies.apply { - required.project("fabric-api") + if (options.curseForge != null || options.modrinth != null) { + project.plugins.apply(MppPlugin::class) + project.extensions.getByType(ModPublishExtension::class).apply { + val isNeoForge = project.pluginManager.hasPlugin("net.neoforged.moddev") + if (isNeoForge) { + val jar by project.tasks.getting(Jar::class) + file.set(jar.archiveFile) + modLoaders.add("NeoForge") + } else { + val remapJar by project.tasks.getting(RemapJarTask::class) + file.set(remapJar.archiveFile) + modLoaders.add("Fabric") + } + type.set( + if (project.version.toString() + .contains("beta") + ) ReleaseType.BETA else if (project.version.toString() + .contains("alpha") + ) ReleaseType.ALPHA else ReleaseType.STABLE + ) + changelog.set(System.getenv("RELEASE_CHANGELOG")) + displayName.set("v" + project.version.toString()) + options.curseForge?.let { + curseforge { + accessToken.set(System.getenv("CURSEFORGE_TOKEN")) + minecraftVersions.add(mcVersion) + changelogType.set("markdown") + projectId.set(it) + if (!isNeoForge) { + requires("fabric-api") + } + } + } + options.modrinth?.let { + modrinth { + accessToken.set(System.getenv("MODRINTH_TOKEN")) + projectId.set(it) + minecraftVersions.add(mcVersion) + if (!isNeoForge) { + requires("fabric-api") + } + } } } - changelog.set(System.getenv("RELEASE_CHANGELOG")) } } @@ -81,7 +84,7 @@ open class BaseExtension(private val project: Project) { coverageThreshold.set(80) } project.dependencies.add("testRuntimeOnly", "org.junit.platform:junit-platform-launcher") - ?.because("required for pitest") + ?.because("required for pitest") } fun testing() { @@ -131,7 +134,10 @@ open class BaseExtension(private val project: Project) { property("sonar.projectKey", projectKey) property("sonar.organization", organization) property("sonar.host.url", "https://sonarcloud.io") - property("sonar.coverage.jacoco.xmlReportPaths", "${project.layout.buildDirectory.get()}/reports/jacoco/codeCoverageReportAggregate/codeCoverageReportAggregate.xml") + property( + "sonar.coverage.jacoco.xmlReportPaths", + "${project.layout.buildDirectory.get()}/reports/jacoco/codeCoverageReportAggregate/codeCoverageReportAggregate.xml" + ) } } } diff --git a/refinedarchitect-versioning/build.gradle.kts b/refinedarchitect-versioning/build.gradle.kts index 42cf11c..e2348be 100644 --- a/refinedarchitect-versioning/build.gradle.kts +++ b/refinedarchitect-versioning/build.gradle.kts @@ -51,7 +51,6 @@ publishing { password = System.getenv("GITHUB_TOKEN") } } - mavenLocal() } publications { create("maven") { From 41e0b6ffa0dd8b1c7dd33a4e2b2a34d9a1cff888 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Tue, 10 Sep 2024 14:03:40 +0000 Subject: [PATCH 4/4] chore: prepare release v0.19.0 --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9d66c8..7a9f1c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [0.19.0] - 2024-09-10 + ### Added - Support for the Gradle config cache. @@ -382,7 +384,9 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Gradle helpers for Fabric and Forge projects. - CI workflows. -[Unreleased]: https://github.com/refinedmods/refinedarchitect/compare/v0.18.0...HEAD +[Unreleased]: https://github.com/refinedmods/refinedarchitect/compare/v0.19.0...HEAD + +[0.19.0]: https://github.com/refinedmods/refinedarchitect/compare/v0.18.0...v0.19.0 [0.18.0]: https://github.com/refinedmods/refinedarchitect/compare/v0.17.1...v0.18.0