Class RemappedModArtifacts
java.lang.Object
net.fabricmc.loom.configuration.mods.dependency.RemappedModArtifacts
一批 remapped mod 产物**各自的生产位置**,消费方据此把产物路径换成可注入配置的依赖表示.
为什么消费方不能只依赖「本项目的那一个任务」
产物落在构建内所有项目共用的remapped_mods 仓库里,同一条路径只能有一个生产者,由
RemapMinecraftTaskRegistry.claimAll(org.gradle.api.Project, java.util.List<java.nio.file.Path>, java.util.Map<java.lang.String, java.lang.String>, java.util.function.Function<java.util.List<java.nio.file.Path>, org.gradle.api.tasks.TaskProvider<? extends org.gradle.api.Task>>) 在同一构建内判定(见 RemapModsTask)。
本项目这一批里可能有若干条产物早已被**别的项目**认领——那些产物由对方的任务产出,本项目不会再写第二遍,
因此消费方必须按**每一条产物**去挂依赖,而不是一律挂到本项目的任务上:后者会让构建因为
「用了别的任务的产物却没声明依赖」而失败,或者更糟——声明了一条并不产出该文件的任务依赖。
依赖按任务路径登记
产出方可能来自另一份 Loom classloader(同一构建内多个项目各带一份 Loom 时会发生),任务实例过不来, 任务路径是字符串、跨 classloader 可用,交给builtBy 后由 Gradle 解析成真正的(可能是跨项目的)
任务依赖。-
Constructor Summary
ConstructorsConstructorDescriptionRemappedModArtifacts(org.gradle.api.Project project, Path root, Map<Path, RemapMinecraftTaskRegistry.Producer> producers) -
Method Summary
-
Constructor Details
-
RemappedModArtifacts
public RemappedModArtifacts(org.gradle.api.Project project, Path root, Map<Path, RemapMinecraftTaskRegistry.Producer> producers) - Parameters:
project- 消费方项目root- 共享仓库根(getRemappedModCache)producers- 本次登记判定的「产物路径 → 生产位置」;键为绝对规范化路径
-
-
Method Details
-
dependency
Returns 该产物的依赖表示. 即「文件本身 + 产出它的任务」,可直接交给DependencyHandler#add或ModSettings#getModFiles.- Parameters:
relativeArtifactPath- 相对共享仓库根的产物路径(见LocalMavenHelper.getRelativeArtifactPath(java.lang.String))- Returns:
- 该产物的依赖表示
-