Class WriteMinecraftJarSidecarsTask

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
net.fabricmc.loom.pipeline.WriteMinecraftJarSidecarsTask
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 WriteMinecraftJarSidecarsTask extends org.gradle.api.DefaultTask
补出 maven 构件目录里「不属于 jar processor 链」的两个文件:pom 与 backup.

ProcessMinecraftJarTask 只产出 jar,且这是刻意的设计(见其类注释的「本任务不产出的东西」): 它按「处理器链就地改 jar」建模,而 pom 是坐标的纯函数、backup 是链跑完之后才该出现的副本。 但配置期那条路径在 copyToMaven 与 createBackupJars 里顺带产生了这两个文件, 缺它们会直接破坏下游:缺 pom 让按坐标解析该构件的依赖失败,缺 backup 让 genSources 抛 「Input minecraft jar not found」。因此切换生产路径时必须由别处继续产出它们——就是本任务。

为什么单独一个任务,而不是塞进处理任务

两者的就绪前提不同:pom 与 backup 都必须在链**跑完之后**产生(backup 更是 jar 的逐字节副本, 早于链完成就复制等于复制了一份半成品)。拆开之后 ProcessMinecraftJarTask 保持原样, 顺序由 Gradle 从本任务对 jar 的 @InputFile 依赖推出。

落位必须原子

两个文件都位于跨进程、跨 daemon 共享的 maven 仓库,且配置期就已是原子落位 (savePom 的唯一临时文件 + 原子 move,createBackupJars 的 AtomicFiles.copy)。 本任务沿用同一条契约:否则读方会读到半写的 pom / backup,而「内容判定」发现不了这类残骸。
  • 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
    abstract org.gradle.api.file.RegularFileProperty
    jar 的逐字节副本的输出位置.
    abstract org.gradle.api.file.RegularFileProperty
    已由处理任务落位的 jar;本任务只为它补出同构件目录里的 pom 与 backup.
    abstract org.gradle.api.file.RegularFileProperty
    pom 的输出位置,由接线侧按 LocalMavenHelper 的 name/version 算出.
    abstract org.gradle.api.provider.Property<String>
    写 pom 所需坐标之一;未设置 getPom() 时无意义.
    abstract org.gradle.api.provider.Property<String>
    写 pom 所需坐标之一(maven 仓库根);未设置 getPom() 时无意义.
    abstract org.gradle.api.provider.Property<String>
    写 pom 所需坐标之一;未设置 getPom() 时无意义.
    abstract org.gradle.api.provider.Property<String>
    写 pom 所需坐标之一;未设置 getPom() 时无意义.
    void
     

    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

    • WriteMinecraftJarSidecarsTask

      public WriteMinecraftJarSidecarsTask()
  • Method Details

    • getJar

      @InputFile @PathSensitive(NONE) public abstract org.gradle.api.file.RegularFileProperty getJar()
      已由处理任务落位的 jar;本任务只为它补出同构件目录里的 pom 与 backup.
    • getPom

      @Optional @OutputFile public abstract org.gradle.api.file.RegularFileProperty getPom()
      pom 的输出位置,由接线侧按 LocalMavenHelper 的 name/version 算出.

      未设置 = 本次不产出 pom(例如调用方按文件而不是坐标消费该构件)。

    • getPomGroup

      @Optional @Input public abstract org.gradle.api.provider.Property<String> getPomGroup()
      写 pom 所需坐标之一;未设置 getPom() 时无意义.
    • getPomName

      @Optional @Input public abstract org.gradle.api.provider.Property<String> getPomName()
      写 pom 所需坐标之一;未设置 getPom() 时无意义.
    • getPomVersion

      @Optional @Input public abstract org.gradle.api.provider.Property<String> getPomVersion()
      写 pom 所需坐标之一;未设置 getPom() 时无意义.
    • getPomMavenRoot

      @Optional @Input public abstract org.gradle.api.provider.Property<String> getPomMavenRoot()
      写 pom 所需坐标之一(maven 仓库根);未设置 getPom() 时无意义.
    • getBackupJar

      @Optional @OutputFile public abstract org.gradle.api.file.RegularFileProperty getBackupJar()
      jar 的逐字节副本的输出位置.

      未设置 = 本 provider 不需要 backup(中间映射产物不会被反编译)。

    • write

      public void write() throws IOException
      Throws:
      IOException