Gradle was chosen to build Fabric mods. This document will dive into the details of the pipeline steps, and the tools used.
Fabric Mods' building depends on fabric loom Gradle plugin, which sets up the Minecraft dependency for Fabric Mods and properly remap their binaries to intermediary so that they can run across Minecraft snapshots as long as the part of vanilla Minecraft they depend on does not change.
The main job of loom: generate a Minecraft dependency from the Minecraft version and mappings references supplied, and convert the built mod to intermediary.
So Minecraft is available as published by Mojang at launchermeta, how about Mappings? How does Fabric generate or develop mappings?
Fabric has a mapping repository called Yarn. It uses Enigma, a deobfuscation tool.
To set up Minecraft for Enigma, yarn uses stitch which can generate intermediary (as to allow Fabric mods to work across snapshots if the code they depend on did not change) and to merge minecraft client and server jars (so as to ease mapping/development).
A Gradle plugin. Sets up the Minecraft dependency for Fabric Mods and properly remap their binaries to intermediary so that they can run across Minecraft snapshots as long as the part of vanilla Minecraft they depend on does not change.
Yarn is an open-source repository that contains all the mappings used to turn Minecraft obfuscated names into the useful names Fabric mod developers use.
For more information on how to contribute mappings take a look here: Source
Enigma is a tool to deobfuscate Java applications, like Minecraft. Fabric uses a fork of Enigma that has been heavily modified to fix lots of bug and work more effectively with Yarn files.
The code is not for the faint of heart but can be seen here Source
Stitch generates and manages intermediary mappings of APIs across MineCraft versions. Each intermediary mapping is uploaded to FabricMC/intermediary and is used used as part of Yarn's build process.
Matcher is a project used to update intermediary and yarn when a new Minecraft version comes out. Not directly involved in Fabric toolchain, it is still integral as it enables Fabric to swiftly update.
The tool utilized by loom to convert yarn-named mod binaries to intermediary-named usable mod binaries and by fabric loader to convert obfuscated vanilla Minecraft to intermediary.