GradleでJavaDocを出力する
ターミナルからコマンドでJavaDocを出力できるようにしてみる。
build.gradleの修正
JavaDocを出力したい対象(moduleとか)のbuild.gradleに以下を追加。
android.libraryVariants.all { variant -> if (variant.name == "debug") { return } task("generateJavadoc", type: Javadoc) { title = "My JavaDoc" description "Generates JavaDoc." source = variant.javaCompile.source ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) options.links("http://docs.oracle.com/javase/7/docs/api/"); options.links("http://d.android.com/reference/"); exclude '**/BuildConfig.java' exclude '**/R.java' } }
確認
tasksで確認。「Other tasks」にgenerateJavadocが追加されてる。
./gradlew tasks Other tasks ----------- generateJavadoc - Generates JavaDoc.
出力
コマンドを実行して出力する。
./gradlew generateJavadoc
文字化けを直す
charsetをutf-8にしてやる。optionsのcharSetを使えば良い。
android.libraryVariants.all { variant -> if (variant.name == "debug") { return } task("generateJavadoc", type: Javadoc) { title = "My JavaDoc" description "Generates Javadoc" source = variant.javaCompile.source ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) options.links("http://docs.oracle.com/javase/7/docs/api/"); options.links("http://d.android.com/reference/"); options.charSet("utf-8") exclude '**/BuildConfig.java' exclude '**/R.java' } }
出力先
デフォルトでは、build/docs/javadoc以下に出力される。destinationDirを指定すれば任意の出力先を指定できる。
自動化
コマンドで完結するので自動化できる。masterにマージされるとJavaDocを出力して、GitHubPagesとかに上げるまで自動化すると良さそう。
追記
publicのクラス、メソッドのみJavaDocに出力したいので、showFromPublicを追加してみた。
android.libraryVariants.all { variant -> if (variant.name == "debug") { return } task("generateJavadoc", type: Javadoc) { title = "My JavaDoc" description "Generates Javadoc" source = variant.javaCompile.source ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) options.links("http://docs.oracle.com/javase/7/docs/api/"); options.links("http://d.android.com/reference/"); options.charSet("utf-8") options.showFromPublic() exclude '**/BuildConfig.java' exclude '**/R.java' } }
これでpublicのクラス、メソッドのみ出力できた。
参考
- http://snowdream.github.io/blog/android/2013/11/01/how-to-generate-javadocs-with-android-gradle-plugin/
- http://stackoverflow.com/questions/25912190/how-to-set-an-encoding-for-the-javadoc
- http://gradle.monochromeroad.com/docs/userguide/java_plugin.html
- http://www.gradle.org/docs/current/javadoc/org/gradle/external/javadoc/MinimalJavadocOptions.html#showFromPublic()