Skip to content

Commit

Permalink
Restructure Gradle for Dev Efficiency (#2787)
Browse files Browse the repository at this point in the history
  • Loading branch information
krossgg authored Jan 31, 2025
1 parent 4d0624e commit cbff31b
Show file tree
Hide file tree
Showing 18 changed files with 405 additions and 432 deletions.
1 change: 1 addition & 0 deletions .github/workflows/auto-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ jobs:
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
MAVEN_USER: ${{ secrets.MAVEN_USER }}
SNAPSHOT: true
CI: true
permissions:
contents: write
steps:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ jobs:
runs-on: ubuntu-latest
permissions:
contents: write
env:
CI: 'true'
outputs:
ver: ${{ steps.ver.outputs.version }}
steps:
Expand Down
44 changes: 17 additions & 27 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@ plugins {
}

group = maven_group

java.toolchain.languageVersion = JavaLanguageVersion.of(17)

// Formats the mod version to include the loader, Minecraft version, build number (if present), and '-SNAPSHOT-<timestamp>' if enabled.
// Formats the mod version to include the loader, Minecraft version, and '-SNAPSHOT-<timestamp>' if enabled.
boolean isSnapshot = System.getenv("SNAPSHOT")
version = "${mod_version}" + (isSnapshot ? "-SNAPSHOT" : "")
boolean isCI = System.getenv("CI") != null

java {
toolchain.languageVersion = JavaLanguageVersion.of(17)
}

sourceSets {
// Include resources generated by data generators.
Expand All @@ -30,53 +32,41 @@ sourceSets {
srcDirs += 'src/test/java'
}
compileClasspath += main.output
runtimeClasspath += main.output
runtimeClasspath += main.output + main.runtimeClasspath
}

extra {
compileClasspath += main.output
runtimeClasspath += main.output
runtimeClasspath += main.output + main.runtimeClasspath
}
}

// Set up the test and extra configurations
configurations {
testImplementation.extendsFrom(implementation)
testRuntimeOnly.extendsFrom(runtimeOnly)
extraImplementation.extendsFrom(implementation)
extraRuntimeOnly.extendsFrom(runtimeOnly).transitive(false)
extraRuntimeClasspath.transitive(false)
}

obfuscation {
createRemappingConfiguration(configurations.extraRuntimeOnly)
}

apply from: "$rootDir/gradle/scripts/jars.gradle"
apply from: "$rootDir/gradle/scripts/moddevgradle.gradle"
apply from: "$rootDir/gradle/scripts/repositories.gradle"
apply from: "$rootDir/dependencies.gradle"
apply from: "$rootDir/gradle/scripts/resources.gradle"
apply from: "$rootDir/gradle/scripts/jars.gradle"
apply from: "$rootDir/gradle/scripts/publishing.gradle"
apply from: "$rootDir/gradle/scripts/spotless.gradle"

// Create run-folders for non-client configs to avoid pollution of dev envs
generateModMetadata.doFirst {
mkdir('run/server')
mkdir('run/gametest')
mkdir('run/data')
}

tasks.withType(JavaCompile) {
tasks.withType(JavaCompile).configureEach {
options.encoding = "UTF-8"
options.compilerArgs << "-Xlint:-removal"
options.compilerArgs << "-Aquiet=true" // Suppress mixin notes
}

machete {
// disable machete locally for faster builds
enabled = false
enabled = isCI
// Only optimize reobf jars
ignoredTasks.addAll("jar", "slimJar")
additionalTasks.addAll("reobfJar", "reobjSlimJar")
}

lombok {
version = "1.18.32"
version = "1.18.36"
}

104 changes: 40 additions & 64 deletions dependencies.gradle
Original file line number Diff line number Diff line change
@@ -1,78 +1,60 @@
dependencies {
compileOnly 'org.jetbrains:annotations:24.1.0'
compileOnly(libs.jetbrains.annotations)

// LDLib
modApi(forge.ldlib.forge) { transitive = false }
jarJar(forge.ldlib.forge)
jarJar(modApi(forge.ldlib.get()))

// Registrate
modImplementation(jarJar("com.tterrag.registrate:Registrate:${forge.versions.registrate.get()}"))
jarJar(modApi(forge.registrate.get()))

// Configuration
modApi(forge.configuration)
jarJar(forge.configuration)
jarJar(modApi(forge.configuration.get()))

// Mixin (& Extras)
api(annotationProcessor("io.github.llamalad7:mixinextras-common:${this.forge.versions.mixinextras.get()}"))
jarJar("io.github.llamalad7:mixinextras-forge:${this.forge.versions.mixinextras.get()}")
annotationProcessor 'org.spongepowered:mixin:0.8.7:processor'

// JEI
modCompileOnly(forge.jei.common.api) { transitive = false }
modCompileOnly(forge.jei.forge.api) { transitive = false }
modCompileOnly(forge.jei.forge.impl) { transitive = false }

// REI
modCompileOnly(forge.rei.plugin)
modCompileOnly(forge.rei.api)
modCompileOnly(forge.rei.forge)

// EMI
//modCompileOnly("dev.emi:emi-forge:${forge.versions.emi.get()}:api")
annotationProcessor(variantOf(libs.mixin) { classifier("processor") })
annotationProcessor(forge.mixinExtras.common)
api(forge.mixinExtras.common)
jarJar(forge.mixinExtras.forge)

// Recipe Viewers
modCompileOnly(forge.bundles.jei)
modCompileOnly(forge.bundles.rei)
modCompileOnly(forge.emi)

// TOP
modCompileOnly(forge.theoneprobe) { transitive = false }

// Jade
// WAILA-likes
modCompileOnly(forge.theoneprobe)
modCompileOnly(forge.jade)

// Curios
modCompileOnly("top.theillusivec4.curios:curios-forge:${forge.versions.curios.get()}:api")
modCompileOnly(variantOf(forge.curios) { classifier("api") })

// AE2
modCompileOnly(forge.ae2) { transitive = false }
modCompileOnly("curse.maven:ae2wtlib-459929:5217955")
modCompileOnly(forge.ae2)
modCompileOnly(forge.ae2wtlib)

// KJS
modCompileOnly(forge.kubejs) { transitive = false }
modCompileOnly(forge.kubejs)
modCompileOnly(forge.architectury)
modCompileOnly(forge.rhino)

// Shimmer
modCompileOnly(forge.shimmer.forge) { transitive = false }
modCompileOnly("maven.modrinth:embeddium:0.3.19+mc1.20.1")
modCompileOnly("maven.modrinth:oculus:1.20.1-1.7.0")
modCompileOnly(forge.shimmer)
modCompileOnly(forge.embeddium)
modCompileOnly(forge.oculus)

// JAVD
modCompileOnly(forge.javd) { transitive = false }
modCompileOnly(forge.javd)

// FTB Teams
modCompileOnly(forge.ftbteams)
// Teams
modCompileOnly(forge.ftblibrary)

// FTB Chunks
modCompileOnly(forge.ftbchunks)

// Argonauts
modCompileOnly(forge.ftbteams)
modCompileOnly(forge.resourcefullib)
modCompileOnly(forge.argonauts)
modCompileOnly(forge.resourceful)

// xaerosWorldMap
// Maps
modCompileOnly(forge.ftbchunks)
modCompileOnly(forge.xaerosminimap)
modCompileOnly(forge.xaerosworldmap)

// journeyMap
modCompileOnly(forge.journeymap.api)
modCompileOnly(forge.journeymap.forge)

Expand All @@ -81,37 +63,31 @@ dependencies {
modRuntimeOnly(forge.ae2)
modRuntimeOnly(forge.kotlinforforge)

// Runtime Recipe Viewers - uncomment whichever group you want to use //
// Runtime Recipe Viewers - uncomment whichever one you want to use //
modRuntimeOnly(forge.emi)

// modRuntimeOnly(forge.jei.forge.impl)

// modRuntimeOnly(forge.rei.forge)
// modRuntimeOnly(forge.architectury)
// modRuntimeOnly("me.shedaniel.cloth:cloth-config-forge:11.1.136")
// modRuntimeOnly(forge.bundles.rei.runtime)

//////////////////////////////////////////////////////
// Runtime mods for dev testing with unclean client //
// Non-transitive by default //
//////////////////////////////////////////////////////
modExtraRuntimeOnly(forge.javd)
modExtraRuntimeOnly("curse.maven:trenzalore-870210:4848244")
modExtraRuntimeOnly(forge.trenzalore)
modExtraRuntimeOnly(forge.curios)
// modExtraRuntimeOnly(forge.worldstripper)

modExtraRuntimeOnly(forge.kubejs)
modExtraRuntimeOnly(forge.architectury)
modExtraRuntimeOnly(forge.rhino)
modExtraRuntimeOnly(forge.bundles.kjs)

modExtraRuntimeOnly(forge.xaerosminimap)
modExtraRuntimeOnly(forge.xaerosworldmap)
modExtraRuntimeOnly(forge.journeymap.forge)

modExtraRuntimeOnly(forge.ftblibrary)
modExtraRuntimeOnly(forge.ftbteams)
modExtraRuntimeOnly(forge.ftbchunks)

modExtraRuntimeOnly("top.theillusivec4.curios:curios-forge:${forge.versions.curios.get()}")
modExtraRuntimeOnly("curse.maven:spark-361579:4738952")
modExtraRuntimeOnly("curse.maven:observable-509575:5643037")
// modExtraRuntimeOnly(forge.xaerosminimap)
// modExtraRuntimeOnly(forge.xaerosworldmap)
// modExtraRuntimeOnly(forge.journeymap.forge)
// modExtraRuntimeOnly(forge.ftbchunks)

modExtraRuntimeOnly(forge.spark)
modExtraRuntimeOnly(forge.observable)
//////////////////////////

testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
Expand Down
8 changes: 3 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
org.gradle.jvmargs = -Xmx6G
org.gradle.java.installations.auto-download=false
org.gradle.parallel = true
org.gradle.caching = true

# Mod Info
mod_id = gtceu
Expand All @@ -8,9 +11,4 @@ mod_description = GregTech CE Unofficial, ported from 1.12.2
mod_license = LGPL-3.0 license
mod_url = https://github.com/GregTechCEu/GregTech-Modern/
mod_issue_tracker = https://github.com/GregTechCEu/GregTech-Modern/issues/


maven_group = com.gregtechceu.gtceu

enabled_platforms = forge
loom.platform = forge
99 changes: 99 additions & 0 deletions gradle/forge.versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
[versions]
ldlib = "1.0.33.b"
registrate = "MC1.20-1.3.11"
configuration = "2.2.0"
mixinExtras = "0.2.0"

jei = "15.20.0.105"
rei = "12.1.785"
emi = "1.1.13+1.20.1"
ae2 = "15.0.18"
kubejs = "2001.6.4-build.120"
rhino = "2001.2.3-build.6"
architectury = "9.2.14"
clothconfig = "11.1.136"
theoneprobe = "1.20.1-10.0.1-3"
curios = "5.9.1+1.20.1"
kotlinforforge = "4.11.0"
shimmer = "1.20.1-0.2.4"
journeyMapApi = "1.20-1.9-SNAPSHOT"
ftblibrary = "2001.2.4"
ftbteams = "2001.3.0"
ftbchunks = "2001.3.4"

## modrinth maven ##
jade = "11.6.3"
embeddium = "0.3.19+mc1.20.1"
oculus = "1.20.1-1.7.0"

## cursemaven ##
worldStripper = "4578579"
javd = "4803995"
trenzalore = "4848244"
xaerosWorldMap = "5658224"
xaerosMinimap = "5773012"
journeyMap = "5789363"
resourcefullib = "5659871"
argonauts = "5263580"
ae2wtlib = "5217955"
spark = "4738952"
observable = "5643037"
ftblibrary-cm = "5567591"
ftbteams-cm = "5267190"
ftbchunks-cm = "5956390"


[libraries]
ldlib = { module = "com.lowdragmc.ldlib:ldlib-forge-1.20.1", version.ref = "ldlib" }
registrate = { module = "com.tterrag.registrate:Registrate", version.ref = "registrate" }
configuration = { module = "dev.toma.configuration:configuration-forge-1.20.1", version.ref = "configuration" }
mixinExtras-common = { module = "io.github.llamalad7:mixinextras-common", version.ref = "mixinExtras" }
mixinExtras-forge = { module = "io.github.llamalad7:mixinextras-forge", version.ref = "mixinExtras" }

jei-common-api = { module = "mezz.jei:jei-1.20.1-common-api", version.ref = "jei" }
jei-forge-api = { module = "mezz.jei:jei-1.20.1-forge-api", version.ref = "jei" }
jei-forge-impl = { module = "mezz.jei:jei-1.20.1-forge", version.ref = "jei" }
rei-plugin = { module = "me.shedaniel:RoughlyEnoughItems-default-plugin-forge", version.ref = "rei" }
rei-api = { module = "me.shedaniel:RoughlyEnoughItems-api-forge", version.ref = "rei" }
rei-forge = { module = "me.shedaniel:RoughlyEnoughItems-forge", version.ref = "rei" }
emi = { module = "dev.emi:emi-forge", version.ref = "emi" }

ae2 = { module = "appeng:appliedenergistics2-forge", version.ref = "ae2" }
kubejs = { module = "dev.latvian.mods:kubejs-forge", version.ref = "kubejs" }
rhino = { module = "dev.latvian.mods:rhino-forge", version.ref = "rhino" }
architectury = { module = "dev.architectury:architectury-forge", version.ref = "architectury" }
clothconfig = { module = "me.shedaniel.cloth:cloth-config-forge", version.ref = "clothconfig" }
theoneprobe = { module = "mcjty.theoneprobe:theoneprobe", version.ref = "theoneprobe" }
curios = { module = "top.theillusivec4.curios:curios-forge", version.ref = "curios" }
kotlinforforge = { module = "thedarkcolour:kotlinforforge", version.ref = "kotlinforforge" }
journeymap-api = { module = "info.journeymap:journeymap-api", version.ref = "journeyMapApi" }
shimmer = { module = "com.lowdragmc.shimmer:Shimmer-forge", version.ref = "shimmer" }
ftblibrary = { module = "dev.ftb.mods:ftb-library-forge", version.ref = "ftblibrary" }
ftbteams = { module = "dev.ftb.mods:ftb-teams-forge", version.ref = "ftbteams" }
ftbchunks = { module = "dev.ftb.mods:ftb-chunks-forge", version.ref = "ftbchunks" }
jade = { module = "maven.modrinth:jade", version.ref = "jade" }
embeddium = { module = "maven.modrinth:embeddium", version.ref = "embeddium" }
oculus = { module = "maven.modrinth:oculus", version.ref = "oculus" }

worldstripper = { module = "curse.maven:worldStripper-250603", version.ref = "worldStripper" }
javd = { module = "curse.maven:javd-370890", version.ref = "javd" }
trenzalore = { module = "curse.maven:trenzalore-870210", version.ref = "trenzalore" }
xaerosworldmap = { module = "curse.maven:xaeros-world-map-317780", version.ref = "xaerosWorldMap" }
xaerosminimap = { module = "curse.maven:xaeros-minimap-263420", version.ref = "xaerosMinimap" }
journeymap-forge = { module = "curse.maven:journeymap-32274", version.ref = "journeyMap" }
resourcefullib = { module = "curse.maven:resourceful-lib-570073", version.ref = "resourcefullib" }
argonauts = { module = "curse.maven:argonauts-845833", version.ref = "argonauts" }
ae2wtlib = { module = "curse.maven:ae2wtlib-459929", version.ref = "ae2wtlib" }
spark = { module = "curse.maven:spark-361579", version.ref = "spark" }
observable = { module = "curse.maven:observable-509575", version.ref = "observable" }
## cursemaven as a backup ##
ftblibrary-cm = { module = "curse.maven:ftb-library-forge-404465", version.ref = "ftblibrary-cm" }
ftbteams-cm = { module = "curse.maven:ftb-teams-forge-404468", version.ref = "ftbteams-cm" }
ftbchunks-cm = { module = "curse.maven:ftb-chunks-forge-314906", version.ref = "ftbchunks-cm" }

[bundles]
jei = ["jei-common-api", "jei-forge-api", "jei-forge-impl"]
rei = ["rei-plugin", "rei-forge"]
rei-runtime = ["rei-forge", "architectury", "clothconfig"]
kjs = ["kubejs", "rhino", "architectury"]

Loading

0 comments on commit cbff31b

Please sign in to comment.