Package net.fabricmc.loom.task
Class ExportLoomProjectDataTask
java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
net.fabricmc.loom.task.ExportLoomProjectDataTask
- 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 ExportLoomProjectDataTask
extends org.gradle.api.DefaultTask
把当前项目的
LoomProjectData 导出为文件,供其它项目在内存共享表里查不到时回退读取.
输出通过 loomProjectDataElements 可消费配置暴露:消费方可以解析该配置(触发本任务),
也可以直接读文件,所以它必须随项目身份与内容一起失效。本类保留 CacheableTask,
同时把 LoomProjectData.fromProject(org.gradle.api.Project) 真正依赖的内容逐项声明为输入,
原因有两点:
- 不声明输入时,Gradle 只按「输出是否存在」判定 UP-TO-DATE:改了 mod 元数据或映射标识之后文件不刷新, 日常被内存共享表掩盖,只在回退路径与外部消费方那里暴露成过期数据;
- 构建缓存键里没有项目身份时,多个项目(甚至不同项目路径的工作副本)会算出同一个键,
共享缓存可能把别的项目的
project-data.json还原到本项目。
所有输入都用 Provider 惰性求值:配置期只登记「怎么取」,
读取映射配置、mod 元数据与 Mixin AP 输出都发生在执行期,不会在配置阶段强制求值。
-
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 TypeMethodDescriptionvoidabstract org.gradle.api.provider.Property<String> 映射标识,与LoomProjectData.fromProject(org.gradle.api.Project)写入 DTO 的值同源.abstract org.gradle.api.provider.ListProperty<String> Mixin AP 映射文件的路径列表.abstract org.gradle.api.provider.ListProperty<String> 项目内全部 mod 的元数据 JSON,与 DTO 中的 mod 列表一一对应.abstract org.gradle.api.file.RegularFilePropertyabstract org.gradle.api.provider.Property<String> 生产命名空间,与 DTO 里写入的值同源;未配置时为空.abstract org.gradle.api.provider.Property<String> 项目路径,作为数据身份参与缓存键,避免共享缓存在不同项目之间复用同一份数据.abstract org.gradle.api.provider.Property<Boolean> 是否拆分环境源集,与 DTO 里写入的值同源.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
-
ExportLoomProjectDataTask
public ExportLoomProjectDataTask()
-
-
Method Details
-
getProjectPath
项目路径,作为数据身份参与缓存键,避免共享缓存在不同项目之间复用同一份数据. -
getMappingId
映射标识,与LoomProjectData.fromProject(org.gradle.api.Project)写入 DTO 的值同源.映射尚未就绪或未启用混淆时该属性为空(用
@Optional表达,而不是伪造一个占位值)。 -
getProductionNamespace
生产命名空间,与 DTO 里写入的值同源;未配置时为空. -
getSplitEnvironmentSourceSets
是否拆分环境源集,与 DTO 里写入的值同源. -
getModJson
项目内全部 mod 的元数据 JSON,与 DTO 中的 mod 列表一一对应. -
getMixinMappingFiles
Mixin AP 映射文件的路径列表.只登记路径而不是文件内容:DTO 里保存的也是路径,依赖方直接按路径读取生产者项目的文件, 文件内容不属于导出内容。反过来,把它们声明成
@InputFiles会让本任务输入命中compileJava的输出,从而引入未声明的隐式任务依赖(Gradle 会因此禁用执行优化)。 -
getOutputFile
@OutputFile public abstract org.gradle.api.file.RegularFileProperty getOutputFile() -
exportProjectData
- Throws:
IOException
-