Keep on moving

あんまりまとまってないことを書きますよ

How to upgrade dokka version 0.10.x to 1.4.x

Kotlinではドキュメント生成ツール(KDoc JavaでのJavadoc的なもの)として Dokkaというツールがあります。 自作のライブラリでdokka 0.10.1を使っていたのですが、気づいたら1.4.xにアップデートしていました。1 Gradleでの書き方も変更があり、だいぶハマったのでまとめておきます。

TL;DR

chore: update dokka to 1.4.20 · masahitojp/bqdatamapper4k@a8a6933 · GitHub

dokka 1.4.xでの変更点

公式ドキュメントでまとまってます。

github.com

/* 0.10.x */    outputDirectory = "$buildDir/javadoc"
/* 1.4.x */     outputDirectory.set(buildDir.resolve("javadoc"))

こんな感じで = で設定していた箇所がsetter methodに変わったりしてるっぽい。 が、実際にコードで使ってるプロジェクトがなかなかなく,じゃーどう書き換えればいいかよくわかりませんでした。 というわけでGithub で検索してなんとなくわかってきました。

// 0.10.xでのjavadocフォルダにhtmlを出力する設定
val dokka by tasks.getting(DokkaTask::class){
    outputFormat = "html"
    outputDirectory = "$buildDir/javadoc"
}

// 1.4.xでの同じ書き方 htmlを出力したいのでdokkaHtmlを使う
tasks.dokkaHtml.configure {
    outputDirectory.set(buildDir.resolve("javadoc"))
}

// for 1.4.x [Option]  Gfm, javadoc, Jekyll向けの設定もある
tasks.dokkaGfm.configure {}
tasks.dokkaJavadoc.configure {}
tasks.dokkaJekyll.configure {}
// for 0.10.x
val dokkaJar by tasks.creating(Jar::class) {
    group = JavaBasePlugin.DOCUMENTATION_GROUP
    description = "Assembles Kotlin docs with Dokka"
    archiveClassifier.set("javadoc")
    // dependsOn(dokka) not needed; dependency automatically inferred by from(dokka)
    from(dokka)
}
// for 1.4.x
val dokkaJar by tasks.creating(Jar::class) {
    group = JavaBasePlugin.DOCUMENTATION_GROUP
    description = "Assembles Kotlin docs with Dokka"
    archiveClassifier.set("javadoc")
    // dependsOn(dokka) not needed; dependency automatically inferred by from(dokka)
    from(tasks.dokkaHtml) // ^でのtasksの設定を入れる
}

参考

github.com

関連ドキュメント

blog.jetbrains.com

先人に感謝。


  1. https://github.com/Kotlin/dokka/releases/tag/v1.4.20 version名にalphatついているのが気になるところ.リライトしたとのことなのでまだ安定版ではないアピール?