Package net.fabricmc.loom.pipeline
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 -
Method Summary
Modifier and TypeMethodDescriptionabstract org.gradle.api.file.RegularFilePropertyjar 的逐字节副本的输出位置.abstract org.gradle.api.file.RegularFilePropertygetJar()已由处理任务落位的 jar;本任务只为它补出同构件目录里的 pom 与 backup.abstract org.gradle.api.file.RegularFilePropertygetPom()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()时无意义.voidwrite()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, usesServiceMethods 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, setImpliesSubProjectsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods 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
写 pom 所需坐标之一;未设置getPom()时无意义. -
getPomName
写 pom 所需坐标之一;未设置getPom()时无意义. -
getPomVersion
写 pom 所需坐标之一;未设置getPom()时无意义. -
getPomMavenRoot
写 pom 所需坐标之一(maven 仓库根);未设置getPom()时无意义. -
getBackupJar
@Optional @OutputFile public abstract org.gradle.api.file.RegularFileProperty getBackupJar()jar 的逐字节副本的输出位置.未设置 = 本 provider 不需要 backup(中间映射产物不会被反编译)。
-
write
- Throws:
IOException
-