Interface RemapModsTask.ModSpec

Enclosing class:
RemapModsTask

public static interface RemapModsTask.ModSpec
一个待重映射 mod 的描述.

坐标不是元数据冗余:产出路径由坐标与 cache key 决定,而 getOutputJar() 携带的正是这条路径 ——两者必须一致,否则写出的文件与消费方按 maven 助手换算出的是两条不同的路径。

  • Method Summary

    Modifier and Type
    Method
    Description
    org.gradle.api.provider.Property<String>
    产出坐标的分类器;缺省时产出路径不含分类器段.
    org.gradle.api.provider.Property<String>
    产出坐标的组,决定产出路径.
    org.gradle.api.provider.Property<Boolean>
    声明的 refmap 内联选项;决定是否套用 InlineRefmap.
    org.gradle.api.file.RegularFileProperty
    原始 mod jar.
    org.gradle.api.provider.Property<ArtifactMetadata.MixinRemapType>
    jar 内容派生的 mixin 重映射类型;决定套用哪个扩展.
    org.gradle.api.provider.Property<String>
    产出坐标的名(含 cache key).
    org.gradle.api.file.RegularFileProperty
    本 mod 重映射后的 jar 落在共享仓库里的哪一条路径.
    org.gradle.api.file.RegularFileProperty
    拆分依赖的 client 半落位;非拆分依赖为空,此时 getOutputJar() 就是全部产物.
    org.gradle.api.provider.Property<String>
    产出坐标的版本.
  • Method Details

    • getInputJar

      @InputFile @PathSensitive(RELATIVE) org.gradle.api.file.RegularFileProperty getInputJar()
      原始 mod jar.

      每个属性都必须带输入/输出注解:@Nested 的嵌套类型上,Gradle 的工作校验会 要求**所有**属性可追踪,只写 @Optional 是不够的(它修饰的是可选性,不是输入性) ——漏注解不会在编译期暴露,而是等到某个工程真的依赖了文件型 mod 才在任务校验阶段失败。

    • getGroup

      @Input org.gradle.api.provider.Property<String> getGroup()
      产出坐标的组,决定产出路径.
    • getName

      @Input org.gradle.api.provider.Property<String> getName()
      产出坐标的名(含 cache key).
    • getVersion

      @Input org.gradle.api.provider.Property<String> getVersion()
      产出坐标的版本.
    • getClassifier

      @Optional @Input org.gradle.api.provider.Property<String> getClassifier()
      产出坐标的分类器;缺省时产出路径不含分类器段.
    • getMixinRemapType

      @Input org.gradle.api.provider.Property<ArtifactMetadata.MixinRemapType> getMixinRemapType()
      jar 内容派生的 mixin 重映射类型;决定套用哪个扩展.
    • getInlineRefmap

      @Input org.gradle.api.provider.Property<Boolean> getInlineRefmap()
      声明的 refmap 内联选项;决定是否套用 InlineRefmap.
    • getOutputJar

      @Internal org.gradle.api.file.RegularFileProperty getOutputJar()
      本 mod 重映射后的 jar 落在共享仓库里的哪一条路径.

      路径只有一处来源——LocalMavenHelper(消费者的文件依赖也由它算出),注册时按同一条路径 同时喂给任务与登记表。刻意不在这里重算布局:快照版本的目录名与文件名不同源,重算就会分叉成 「任务写一条路径、消费方读另一条」的静默缺失。

      @Internal 而不是 @OutputFile:本任务按批次共享产出,写出的集合是 RemapModsTask.getOutputJars()(只有认领到的那些),而这里的路径是**每条** mod 的落位——两者混用会把 不属于本任务的产物也声明成输出。

    • getSplitClientJar

      @Internal org.gradle.api.file.RegularFileProperty getSplitClientJar()
      拆分依赖的 client 半落位;非拆分依赖为空,此时 getOutputJar() 就是全部产物.

      有值表示这条依赖的产物流向消费方的两条路径(-common 与 -client, 见 SplitModDependency):重映射产出的是整体 jar,因此执行期还要按 JarSplitter 把它拆成两半,再分别落位到这两条路径上——只写其中一条,另一条就是没有生产者的悬空路径。

      来源与 getOutputJar() 相同(同样由 LocalMavenHelper 算出,并参与登记表认领), 因此两条路径与消费方读的两条永远一致。

      只标 @Internal:它与其它输入注解不能共存(属性既然被忽略,就不该再声明可选性)。 为空表示非拆分依赖,这一点与 @Optional 无关。