KotlinにDokkaを導入 タスク実行時にエラー

# ドキュメント生成ツールのDokkaを入れようと思って、手順を調べると簡単だね？と思ってやったけど、めちゃくちゃハマりました・・・
## 結論
Spring Bootが古いせいでうまくいってないっぽいです。(未検証) なのでSpringBootのバージョンをあげる方が良いですが、とりあえず最小限でやりたいみたいな人の役に立ててればと思います。

## 環境
- Spring Boot：2.2
- Kotlin:1.4
- Gradle:6.0.1
- Dokka:1.4.10.2 (本当は1.7系を入れようとしたけど一旦古いものでやりました。)

# 手順

以下を参考にしています。
https://github.com/Kotlin/dokka

### 1.build.gradle.ktsに追加

以下を追加するだけ！(ですが実行時に失敗します・・・)
```kotlin:build.gradle.kts
plugins {
    // 1.7.0を入れたかったけど、依存関係でエラーが出るので今回は1.4.10.2でやりました・・・
    id("org.jetbrains.dokka") version "1.4.10.2"
}

repositories {
    mavenCentral()
}

dependencies {
    dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.4.10.2")
}

```

### 2.実行

```terminal:terminal
./gradlew dokkaHtml
```

### 3.結果確認

`Could not find org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.2.`　が見つからないと怒られる。

```terminal:terminal
> Task :dokkaHtml FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':dokkaHtml'.
> Could not resolve all files for configuration ':dokkaHtmlPlugin'.
   > Could not find org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.2.
     Required by:
         project : > org.jetbrains.dokka:kotlin-as-java-plugin:1.4.10.2 > org.jetbrains.dokka:dokka-base:1.4.10.2

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':dokkaHtml'.
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:38)
        at 
・
・
・
org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        ... 23 more
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.2.
Required by:
    project : > org.jetbrains.dokka:kotlin-as-java-plugin:1.4.10.2 > org.jetbrains.dokka:dokka-base:1.4.10.2


* Get more help at https://help.gradle.org

BUILD FAILED in 22s
1 actionable task: 1 executed

```

調べてみると・・
https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-html-jvm?repo=kotlinx
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52335/09352f67-6646-64a4-86a0-f4e19ac8aa43.png)

`mavenCentral` にはなくて `kotlinX` リポジトリにのみ存在するライブラリであることがわかりました・・・
そして以下に記載のkotlinXリポジトリを追加しようかなと思ったけど、そもそも `https://dl.bintray.com/kotlin/kotlinx/` は502のBad Gatewayに・・・
https://mvnrepository.com/repos/kotlinx

(調べてみると閉鎖されていて、基本的にはCentralからだけにとるようにしようみたいなのもあった
https://www.reddit.com/r/Kotlin/comments/r5ul4k/kotlin_bintray_bad_gateway/)

以下で `kotlinx-html-jvm:0.7.2` をダウンロードできることを発見

https://github.com/detekt/detekt/issues/3461

```kotlin:build.gradle.kts
repositories {
    mavenCentral()
    // 以下を追加
    maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")
}
```

### 再度実行

```terminal:terminal
./gradlew dokkaHtml
```

### 結果
無事成功！ `./build/dokka/html`　の下にファイルができます。
```teminal:terminal
> Task :dokkaHtml
Dokka 1.4.* is an alpha project
Initializing plugins
Validity check
Creating documentation models
Transforming documentation model before merging
Merging documentation models
Transforming documentation model after merging
Creating pages
Transforming pages
Rendering


BUILD SUCCESSFUL in 50s
1 actionable task: 1 executed
```

### おまけ
バージョンを `1.7.0` でやることも試したんですが、諦めた経緯だけ書いておきます。

タスク実行時にエラー
```terminal:terminal
$ ./gradlew dokkaHtml -stacktrace

> Task :dokkaHtml
Initializing plugins
Dokka is performing: documentation for awba-manage
Validity check
Creating documentation models
Transforming documentation model before merging
Merging documentation models
Transforming documentation model after merging


> Task :dokkaHtml FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':dokkaHtml'.
> 'void kotlinx.coroutines.Dispatchers.shutdown()'
・
・
・
Caused by: java.lang.NoSuchMethodError: 'void kotlinx.coroutines.Dispatchers.shutdown()'
・
・
BUILD FAILED in 1m 24s
1 actionable task: 1 executed
```

エラーの原因は依存関係の解決にあり
`kotlinx-coroutines-core:1.3.2` を参照しており、そのバージョンには、存在しないメソッドだからでした。

```terminal:terminal
# 依存関係を確認
./gradlew dependencies

dokkaHtmlPlugin
~
+--- org.jetbrains.dokka:dokka-base:1.7.0
|    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0 -> 1.3.2
```

調べると、Spring Bootのバージョンに`kotlinx-coroutines-core` のversionが関連があるっぽいことが書かれてました。
ということで、放置していたバージョンアップをやることにしつつ、一旦1.4系のDokkaを動かすことにしたという感じでした。 
https://github.com/Kotlin/dokka/issues/2545

以上です