From f255eb359f2f4ed94d121886d20948a91fba0090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Fri, 18 Aug 2023 20:44:07 +0200 Subject: [PATCH] Switch to Kotlin for Gradle. --- .github/workflows/publish.yml | 2 +- build.gradle | 128 ---------------------------------- build.gradle.kts | 128 ++++++++++++++++++++++++++++++++++ gradle.properties | 12 ++-- settings.gradle | 12 ---- settings.gradle.kts | 13 ++++ 6 files changed, 147 insertions(+), 148 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b92f57c..5cc8da4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -35,7 +35,7 @@ jobs: key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: ubuntu-latest-gradle- - name: Build with Gradle - run: ./gradlew -Psemver='${{ steps.split_tag.outputs.mod_version }}' build + run: ./gradlew -PmodVersion='${{ steps.split_tag.outputs.mod_version }}' build - name: Add Artifacts to Github Release uses: alexellis/upload-assets@0.4.0 diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 4fe55f5..0000000 --- a/build.gradle +++ /dev/null @@ -1,128 +0,0 @@ -plugins { - id 'net.minecraftforge.gradle' version '[6.0,6.2)' - id 'maven-publish' - id 'idea' - id 'eclipse' -} - -def getGitRef() { - try { - final def stdout = new ByteArrayOutputStream() - exec { - commandLine 'git', 'rev-parse', '--short', 'HEAD' - standardOutput = stdout - } - return stdout.toString().trim() - } catch (final Throwable ignored) { - return 'unknown' - } -} - -version = "${semver}+${getGitRef()}" -group = maven_group -archivesBaseName = "${rootProject.archives_base_name}-MC${rootProject.minecraft_version}" - -java.toolchain.languageVersion = JavaLanguageVersion.of(17) - -tasks.withType(JavaCompile).configureEach { - options.encoding = 'utf-8' -} - -repositories { - maven { - url 'https://cursemaven.com' - content { includeGroup "curse.maven" } - } -} - -dependencies { - minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - - // Just for in-dev convenience. Mod doesn't use any JEI APIs. - runtimeOnly fg.deobf("curse.maven:jei-238222:4690097") -} - -minecraft { - mappings channel: 'official', version: minecraft_version - - runs { - client { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'info' - - mods { - bedrockores { - source sourceSets.main - } - } - } - - server { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'info' - - mods { - bedrockores { - source sourceSets.main - } - } - } - - data { - workingDirectory project.file('run') - - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'info' - - args '--mod', 'bedrockores', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources') - - mods { - bedrockores { - source sourceSets.main - } - } - } - } -} - -task copyGeneratedResources(type: Copy) { - from 'src/generated' - into 'src/main' - exclude 'resources/.cache' -} - -processResources { - inputs.property "version", semver - - filesMatching("META-INF/mods.toml") { - expand "version": semver - } -} - -jar { - finalizedBy 'reobfJar' - - manifest { - attributes([ - 'Specification-Title' : 'bedrockores', - 'Specification-Vendor' : 'Sangar', - 'Specification-Version' : '1', - 'Implementation-Title' : project.name, - 'Implementation-Version' : version, - 'Implementation-Vendor' : 'Sangar', - 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ]) - } -} - -idea { - module { - for (final String exclude in ["out", "logs"]) { - excludeDirs += file(exclude) - } - } -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..a98e226 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,128 @@ +plugins { + id("net.minecraftforge.gradle") version "[6.0,6.2)" + id("idea") + id("eclipse") +} + +fun getGitRef(): String { + return providers.exec { + commandLine("git", "rev-parse", "--short", "HEAD") + isIgnoreExitValue = true + }.standardOutput.asText.get().trim() +} + +val modId: String by extra +val minecraftVersion: String by extra +val forgeVersion: String by extra +val modVersion: String by extra +val mavenGroup: String by extra + +version = "${modVersion}+${getGitRef()}" +group = mavenGroup +base { + archivesName.set("${modId}-MC${minecraftVersion}") +} + +java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) + +tasks.withType().configureEach { + options.encoding = "utf-8" +} + +repositories { + maven { + url = uri("https://cursemaven.com") + content { includeGroup("curse.maven") } + } +} + +dependencies { + minecraft("net.minecraftforge:forge:${minecraftVersion}-${forgeVersion}") + + // Just for in-dev convenience. Mod doesn't use any JEI APIs. + runtimeOnly(fg.deobf("curse.maven:jei-238222:4690097")) +} + +minecraft { + mappings("official", minecraftVersion) + + runs { + create("client") { + workingDirectory(file("run")) + + property("forge.logging.markers", "REGISTRIES") + property("forge.logging.console.level", "info") + + mods { + create(modId) { + source(sourceSets.main.get()) + } + } + } + + create("server") { + workingDirectory(file("run")) + + property("forge.logging.markers", "REGISTRIES") + property("forge.logging.console.level", "info") + + mods { + create(modId) { + source(sourceSets.main.get()) + } + } + } + + create("data") { + workingDirectory(file("run")) + + property("forge.logging.markers", "REGISTRIES") + property("forge.logging.console.level", "info") + + args("--mod", "bedrockores", "--all", "--output", file("src/generated/resources/"), "--existing", file("src/main/resources")) + + mods { + create(modId) { + source(sourceSets.main.get()) + } + } + } + } +} + +tasks.register("copyGeneratedResources") { + from("src/generated") + into("src/main") + exclude("resources/.cache") +} + +tasks.withType { + inputs.property("version", modVersion) + + filesMatching("META-INF/mods.toml") { + expand(mapOf("version" to modVersion)) + } +} + +tasks.withType { + finalizedBy("reobfJar") + + manifest { + attributes(mapOf( + "Specification-Title" to "bedrockores", + "Specification-Vendor" to "Sangar", + "Specification-Version" to "1", + "Implementation-Title" to project.name, + "Implementation-Version" to version, + "Implementation-Vendor" to "Sangar", + )) + } +} + +idea { + module { + for (exclude in arrayOf("out", "logs")) { + excludeDirs.add(file(exclude)) + } + } +} diff --git a/gradle.properties b/gradle.properties index eca0883..c8cb803 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,10 @@ -org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -minecraft_version=1.20.1 +minecraftVersion=1.20.1 +forgeVersion=47.1.0 -archives_base_name=bedrockores -maven_group=li.cil.bedrockores - -forge_version=47.1.0 +modId=bedrockores +mavenGroup=li.cil.bedrockores # Set by build pipeline. -semver=0.0.0 +modVersion=0.0.0 diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 0b0cfb3..0000000 --- a/settings.gradle +++ /dev/null @@ -1,12 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - maven { url = 'https://maven.minecraftforge.net/' } - } -} - -plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' -} - -rootProject.name = archives_base_name diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..1a8add3 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,13 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { url = uri("https://maven.minecraftforge.net/") } + } +} + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0" +} + +val modId: String by settings +rootProject.name = modId