Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restructure Gradle for Dev Efficiency #2787

Merged
merged 9 commits into from
Jan 31, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading