【Gradle】JavadocやテストレポートをGitHub Pagesに公開する
背景
最近のっぴきならなくもない事情でJavaを触り始めました。
var
やStream、switch
式を知らなかったので「古臭くて冗長」というイメージでしたが、モダンな書き方もできるんだぜということがわかってきたので、練習も兼ねてテンプレートリテラルっぽく書けるちっこいクラスを作ってみました。
このプロジェクト(というほど大げさでもないけど)ではJavadocでドキュメントを書き、JUnit 5でテストを走らせているため、それぞれ成果物たるHTMLを適当な場所(build/docs/javadoc
/build/reports/tests/test
)に出力してくれます。
さて、せっかくAPIドキュメントやテストレポートを生成したのでGitHub Pagesに公開して「それっぽく」したい!と思うのが人情です。
大した手間ではないのですが、Gradleの設定など、情報にたどり着くのに時間がかかったので未来の自分のためにもここに書き残しておきます。
環境
- Linux Mint 20.3 Una (based on Ubuntu 20.04 Focal Fossa)
- Oracle Java SE 17.0.3.1
- Gradle 7.4.2
- JUnit 5.8.2
なお、残念ながら2022年5月4日現在、GradleはJava 18に未対応です。うにょーん。
Java 18 and later versions are not yet supported.
全体像
-
gradle javadoc
でdocs/javadoc
にドキュメントを生成 -
gradle test
でテストを実行し、docs/test-reports
にレポートを生成 - GitHub Pagesを有効にして
main
ブランチのdocs
ディレクトリを公開するように設定する -
git push
するとアカウント名.github.io/レポジトリ名/javadoc/
やアカウント名.github.io/レポジトリ名/test-reports/
が見れるようになる
main
ブランチにドキュメント類を置くのはお行儀が悪い!という意見もあります(わかる)。
Javadoc
build.gradle
でJavadocの出力先を設定しましょう。
reporting.file
だとbuild/docs
に出力されてしまうので注意です(たぶんReporting
のdocsDir
あたりをいじるのが正攻法なのかな〜と思いつつ目をそらす)。
javadoc {
destinationDir = file("docs/javadoc")
}
gradle javadoc
するとdocs/javadoc
に出力されます。
Test
build.gradle
でテストレポートの出力先を設定します。
テストレポートはReporting
というAPIで制御されているようで、reports
というインスタンスにhtml
やcss
など種別ごとのReport
オブジェクトが格納されているようです。
「destination
は廃止予定なのでoutputLocation
を使え」とあります。
test {
useJUnitPlatform()
reports.html.outputLocation = file("docs/test-reports")
}
gradle test
するとテストが実行されてdocs/test-reports
にレポートが出力されます。
GitHub Pages
特に変わったところはなく、レポジトリのSettings
-> Pages
-> Source
をmain
に -> folder
を/docs
にして保存すればOKです。
GitHub Actionsの設定すら不要というお手軽さ。
おわり
えっ、終わり!?
というわけでおわりです。
なんて簡単なんだ……
一応、今回はindex.html
を用意していないのでhttps://アカウント登録.github.io/レポジトリ名/
にアクセスしても404になりますので注意してください。
README
にアカウント名.github.io/レポジトリ名/javadoc/
やアカウント名.github.io/レポジトリ名/test-reports/
へのリンクを含めておくと親切だと思います。
Author And Source
この問題について(【Gradle】JavadocやテストレポートをGitHub Pagesに公開する), 我々は、より多くの情報をここで見つけました https://zenn.dev/fj68/articles/8bd2886410ba7f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol