📌

Minecraft ModをMaven Centralに公開する時の罠

に公開

Im-Fran/SonatypeCentralUploadを利用して、Minecraft ModをMaven Centralに公開するときに遭遇した罠について書く。

公開の具体的な手順についてはこの記事様を参考にしてほしい。

環境

  • Minecraft 1.12.2
  • Minecraft Forge 14.23.5.2847
  • RetroFuturaGradle 1.3.27

versionがunspecifiedになる。

例えば

* What went wrong:
Execution failed for task ':sonatypeCentralUpload'.
> Artifact name 'mctest-dev.jar' does not match or does not start with project name 'mctest-unspecified'.

のように、バージョンの部分がunspecifiedになってしまう問題。

これはSonatypeCentralUpload pluginがproject.versionからバージョンを取得しているためである。
例えばCleanroomMCのTemplateDevEnvの場合、バージョンが格納されている変数はmod_versionであるため、このようなエラーとなってしまう。

project.versionを指定すれば解決できる。

build.gradle.kts
project.version = mod_version

File path '**' is not valid for file '**'

versionと同じく、グループIDもproject.groupから取得される。

build.gradle.kts
project.group = maven_group

無印の.jarがなく、{-dev,-javadoc,-sources}.jarしかない

タスクjarが生成するのは、-dev.jarである。
これはjarファイルをModとして使用するには再度難読化を行わないといけないためである。
それを行うタスクはreobfJarなので、これを指定すると無印のjarファイルを生成してくれる。

build.gradle.kts
tasks.named<SonatypeCentralUploadTask>("sonatypeCentralUpload") {
-   dependsOn("jar", "sourcesJar", "javadocJar", "generatePomFileForMavenPublication")
+   dependsOn("jar", "reobfJar", "sourcesJar", "javadocJar", "generatePomFileForMavenPublication")
    // ...
    
    archives.set(files(
        tasks.named("jar"),
+       tasks.named("reobfJar"),
        tasks.named("sourcesJar"),
        tasks.named("javadocJar"),
    ))
}

Discussion