Class AccessTransformForgeJarTask

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
net.fabricmc.loom.pipeline.AccessTransformForgeJarTask
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 AccessTransformForgeJarTask extends org.gradle.api.DefaultTask
L3 流水线:对打补丁后的中间 Minecraft jar 执行 Forge 的 access transform (minecraft-<type>-<ns>-at-patched.jar).

它取代的是 MinecraftPatchedProvider.provide() 里那段配置期同步执行的 accessTransformForge()。

工具声明为什么是「纯值 + 执行期重建」

AT 工具的 classpath 来自项目依赖解析、JVM 可执行文件来自 Java 工具链,二者都只能在配置期取得; 待应用的 AT 文件则要从 userdev jar 里抽出来,落在一个临时目录里。因此这里按本仓库既有的 AccessTransformerJarProcessor 处置方式: 于是「AT 文件抽取」不再发生在配置期,而实际命令行仍只由 AccessTransformerService.execute 构造一处, 与配置期路径不会分叉。
  • Nested Class Summary

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

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

    Fields
    Modifier and Type
    Field
    Description
    static final String
    任务名:消费侧(本仓库的测试与诊断)按它引用产出任务.

    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.ConfigurableFileCollection
    AT 工具及其依赖的 jar(配置期解析出的绝对路径).
    abstract org.gradle.api.provider.Property<String>
    AT 文件在 userdev jar 里的目录形态(ats 声明为目录时设置).
    abstract org.gradle.api.provider.Property<String>
    AT 工具使用的 JVM 可执行文件;未配置 Java 工具链时为未设置,表示沿用 Gradle 自身的 JVM.
    abstract org.gradle.api.provider.Property<String>
    AT 工具的主类.
    abstract org.gradle.api.provider.ListProperty<String>
    AT 文件在 userdev jar 里的清单形态(ats 声明为文件列表时设置).
    abstract org.gradle.api.provider.Property<String>
    规则当前的命名空间.
    abstract org.gradle.api.provider.Property<String>
    目标 jar 所在的命名空间;与 getAtSourceNamespace() 同时设置或同时缺省.
    abstract org.gradle.api.provider.Property<Boolean>
    同 getAtVerboseStdout():只影响日志透传,不影响产物.
    abstract org.gradle.api.provider.Property<Boolean>
    是否把 AT 工具的标准输出透传到构建日志.
    abstract org.gradle.api.file.RegularFileProperty
    AT 文件的来源:Forge 的 userdev jar.
    abstract org.gradle.api.file.RegularFileProperty
    输入:映射文件,用于把 AT 规则翻译到目标 jar 的命名空间.
    abstract org.gradle.api.file.RegularFileProperty
    legacy Forge 专用:要合进产物的 forge.jar.
    abstract org.gradle.api.model.ObjectFactory
    执行期实例化服务选项用(Project 在执行期不可用,见类注释).
    abstract org.gradle.api.file.RegularFileProperty
    产物:AT 之后的 jar(与配置期同一条路径).
    abstract org.gradle.api.file.RegularFileProperty
    输入:打补丁后的中间 jar(AT 的作用对象).
    abstract org.gradle.api.provider.Property<String>
    legacy Forge 专用:写完产物后要打的补丁版本标记.

    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
  • Field Details

    • NAME

      public static final String NAME
      任务名:消费侧(本仓库的测试与诊断)按它引用产出任务.
      See Also:
  • Constructor Details

    • AccessTransformForgeJarTask

      public AccessTransformForgeJarTask()
  • Method Details

    • getPatchedIntermediateJar

      @InputFile @PathSensitive(NONE) public abstract org.gradle.api.file.RegularFileProperty getPatchedIntermediateJar()
      输入:打补丁后的中间 jar(AT 的作用对象).
    • getForgeUserdevJar

      @InputFile @PathSensitive(NONE) public abstract org.gradle.api.file.RegularFileProperty getForgeUserdevJar()
      AT 文件的来源:Forge 的 userdev jar.
    • getAtDirectory

      @Input @Optional public abstract org.gradle.api.provider.Property<String> getAtDirectory()
      AT 文件在 userdev jar 里的目录形态(ats 声明为目录时设置).
    • getAtPaths

      @Input public abstract org.gradle.api.provider.ListProperty<String> getAtPaths()
      AT 文件在 userdev jar 里的清单形态(ats 声明为文件列表时设置).
    • getAtMainClass

      @Input public abstract org.gradle.api.provider.Property<String> getAtMainClass()
      AT 工具的主类.
    • getAtClasspath

      @Classpath public abstract org.gradle.api.file.ConfigurableFileCollection getAtClasspath()
      AT 工具及其依赖的 jar(配置期解析出的绝对路径).
    • getAtJavaExecutable

      @Input @Optional public abstract org.gradle.api.provider.Property<String> getAtJavaExecutable()
      AT 工具使用的 JVM 可执行文件;未配置 Java 工具链时为未设置,表示沿用 Gradle 自身的 JVM.
    • getAtVerboseStdout

      @Internal public abstract org.gradle.api.provider.Property<Boolean> getAtVerboseStdout()
      是否把 AT 工具的标准输出透传到构建日志.

      标记为 @Internal 而**不是** @Input:它只决定输出流接哪里, 不参与产物字节。当它是 @Input 时,本任务虽标了 @CacheableTask 却会因「日志级别变化」而缓存键变化,永远撞不到同一键(实测:AllinGame 的 forge 生产线每轮重跑 10 步 MCP 链,并连带下游三个任务一起重跑)。

    • getAtVerboseStderr

      @Internal public abstract org.gradle.api.provider.Property<Boolean> getAtVerboseStderr()
      同 getAtVerboseStdout():只影响日志透传,不影响产物.
    • getOutputJar

      @OutputFile public abstract org.gradle.api.file.RegularFileProperty getOutputJar()
      产物:AT 之后的 jar(与配置期同一条路径).
    • getMappings

      @InputFile @PathSensitive(NONE) @Optional public abstract org.gradle.api.file.RegularFileProperty getMappings()
      输入:映射文件,用于把 AT 规则翻译到目标 jar 的命名空间.

      声明成文件而非映射树:映射树不可序列化,配置缓存在此只记录文件路径与内容哈希, 树本身在执行期按需重建(见 readMappings())。

      可选:只有 legacy Forge 需要翻译(见 getAtSourceNamespace()), 而 disableObfuscation 形态下项目根本没有映射配置,此时既不翻译也不设置本输入。

    • getAtSourceNamespace

      @Input @Optional public abstract org.gradle.api.provider.Property<String> getAtSourceNamespace()
      规则当前的命名空间.

      仅在「规则命名空间与作用对象不一致」时需要——目前只有 legacy Forge(srg 规则 作用于 official jar)。未设置表示不翻译,规则原样交给 AT 工具。

    • getAtTargetNamespace

      @Input @Optional public abstract org.gradle.api.provider.Property<String> getAtTargetNamespace()
      目标 jar 所在的命名空间;与 getAtSourceNamespace() 同时设置或同时缺省.
    • getMergeForgeJar

      @InputFile @PathSensitive(NONE) @Optional public abstract org.gradle.api.file.RegularFileProperty getMergeForgeJar()
      legacy Forge 专用:要合进产物的 forge.jar.

      legacy 链的最终 jar 是「AT 后的 Minecraft jar + Forge 自身的类」,而 modern 链把这两者 交给下游的 remap 任务。不设置表示不需要合并(modern / NeoForge 形态)。

    • getPatchVersion

      @Input @Optional public abstract org.gradle.api.provider.Property<String> getPatchVersion()
      legacy Forge 专用:写完产物后要打的补丁版本标记.

      legacy 链的最终 jar 不再经任何下游 remap 任务,所以就绪标记必须由本任务自己写。 不设置表示不写(modern 形态由 GenerateForgePatchedJarTask 负责)。

    • getObjects

      @Inject public abstract org.gradle.api.model.ObjectFactory getObjects()
      执行期实例化服务选项用(Project 在执行期不可用,见类注释).
    • generate

      public void generate() throws Exception
      Throws:
      Exception