Class GenerateSrgNamedMappingsTask

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
net.fabricmc.loom.pipeline.GenerateSrgNamedMappingsTask
All Implemented Interfaces:
Comparable<org.gradle.api.Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.TaskInternal, org.gradle.api.Named, org.gradle.api.plugins.ExtensionAware, org.gradle.api.Task, org.gradle.util.Configurable<org.gradle.api.Task>

@CacheableTask public abstract class GenerateSrgNamedMappingsTask extends org.gradle.api.DefaultTask
L3 流水线:把「srg → named」的映射整份写成 SRG 文本(Forge 的 mappings-srg-named.srg).

它取代的是 MappingConfiguration.applyToProject 里那段配置期同步执行的生成 (配置文件锁 → 锁内二次确认 → 写临时文件 → 原子落位)。转换本身仍走 MappingConfiguration.writeSrgNamedMappings(Path, Path):同一份实现被两条路径共用, 避免两套转换逻辑产出不等价的 srg 文本——这与本流水线其余环节(合并/拆分/重映射)的处置一致。

旧路径 vs 本任务
旧路径本任务
是否需要生成配置期 isReusableMappingsText 判定(存在且非空) Gradle up-to-date 检查(输入内容 + 输出快照)
并发保护跨进程文件锁 + 锁内二次确认任务图 + 构建缓存
残骸恢复手工判「0 字节残骸」并重建输出快照不符即重建
执行时机配置期(afterEvaluate)执行期

为什么输入是「srg 命名空间的 tiny」而不是映射 jar

旧路径用的是 TinyMappingsService(MappingOption.WITH_SRG),它读的就是 mappings-srg-migrated.tiny 这一份纯文本映射树;本任务的 getMappings() 取同一条路径, 读取方式也同源(MappingReader.read(Path, MappingTree))。换成映射 jar 需要重跑整条 layered/migrated 链,那是另一个阶段的事,也不属于本次迁移范围。

就绪判据的差别

旧路径的「存在且非空」判据是为了识别「先删后写被中断」留下的 0 字节残骸;换成任务后这一层由 Gradle 的输出快照承担:快照不符(含被截断)即重建,且任务每次都是原子落位,不会自己制造残骸。 getRefreshDeps() 只是把 --refresh-dependencies 的强制重建语义保留下来(与 ExtractMinecraftServerJarTask 同款),不参与产物的内容判定。
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.gradle.api.Named

    org.gradle.api.Named.Namer
  • Field Summary

    Fields inherited from interface org.gradle.api.Task

    TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    abstract org.gradle.api.file.RegularFileProperty
    输入的映射树:mappings-srg-migrated.tiny(srg 命名空间).
    abstract org.gradle.api.provider.Property<Boolean>
    是否强制重建(对应 --refresh-dependencies):旧路径在该情形下无条件重写产物.
    abstract org.gradle.api.file.RegularFileProperty
    产物:mappings-srg-named.srg(与旧路径同一条路径).

    Methods inherited from class org.gradle.api.DefaultTask

    compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService

    Methods inherited from class org.gradle.api.internal.AbstractTask

    acceptServiceReferences, appendParallelSafeAction, doNotTrackState, doNotTrackStateIf, getAsDynamicObject, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getOnlyIf, getReasonNotToTrackState, getReasonsNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, restoreOnlyIf, restoreTaskActions, setImpliesSubProjects

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.gradle.api.Task

    doNotTrackState, notCompatibleWithConfigurationCache
  • Constructor Details

    • GenerateSrgNamedMappingsTask

      public GenerateSrgNamedMappingsTask()
  • Method Details

    • getMappings

      @InputFile @PathSensitive(NONE) public abstract org.gradle.api.file.RegularFileProperty getMappings()
      输入的映射树:mappings-srg-migrated.tiny(srg 命名空间).
    • getRefreshDeps

      @Input public abstract org.gradle.api.provider.Property<Boolean> getRefreshDeps()
      是否强制重建(对应 --refresh-dependencies):旧路径在该情形下无条件重写产物.
    • getSrgFile

      @OutputFile public abstract org.gradle.api.file.RegularFileProperty getSrgFile()
      产物:mappings-srg-named.srg(与旧路径同一条路径).
    • generate

      public void generate() throws IOException
      Throws:
      IOException