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>
    是否把 AT 工具的标准错误透传到构建日志.
    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.model.ObjectFactory
    执行期实例化服务选项用(Project 在执行期不可用,见类注释).
    abstract org.gradle.api.file.RegularFileProperty
    产物:AT 之后的 jar(与配置期同一条路径).
    abstract org.gradle.api.file.RegularFileProperty
    输入:打补丁后的中间 jar(AT 的作用对象).

    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

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

      @Input public abstract org.gradle.api.provider.Property<Boolean> getAtVerboseStderr()
      是否把 AT 工具的标准错误透传到构建日志.
    • getOutputJar

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

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

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

    • 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() 同时设置或同时缺省.
    • getObjects

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

      public void generate() throws Exception
      Throws:
      Exception