Documentación de Gradle, Javadoc y Android.
android-gradle (2)
Ahora estoy usando Gradle para todos mis proyectos, e incluso para la generación javadoc.
android.libraryVariants.all { variant ->
task("generate${variant.name}Javadoc", type: Javadoc) {
title = "$name $version API"
source = variant.javaCompile.source
ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
ext.googlePlayServicesJar = "${android.plugin.sdkDirectory}/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar"
classpath = files(variant.javaCompile.classpath.files, ext.androidJar, ext.googlePlayServicesJar)
options.links("http://docs.oracle.com/javase/7/docs/api/");
options.links("http://d.android.com/reference/");
//options.linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
exclude ''**/BuildConfig.java''
exclude ''**/R.java''
}
}
Con ese código conseguí que todo funcionara, excepto una cosa: objetos regulares de la API de Android como Activity, Bitmap, etc. Los enlaces de Java funcionan bien.
La documentación final generada no se vincula a http://d.android.com/reference . Probé ambos opciones.links () y options.linksOffline()
sin éxito.
EDITAR
Gracias a @ejb, el problema era que no puede proporcionar múltiples options.links()
al mismo tiempo. Así que utilicé ambos options.links()
para la documentación de Java y options.linksOffline()
para la documentación de Android:
options {
links("http://docs.oracle.com/javase/7/docs/api/");
linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
//stylesheetFile = new File(projectDir, "stylesheet.css");
}
Para Android Gradle plugin 1.1.2+ (com.android.tools.build:gradle:1.1.+)
libraryVariants - ya no funciona
utilizar:
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
destinationDir = file("../javadoc/")
failOnError false
}
destinationDir = file ("../ javadoc /") : ubique javadocs en la raíz del directorio del proyecto (de esta forma, el complemento jenkins javadoc podría encontrarlo y mostrarlo en el panel de documentos especiales)
failOnError false : para suprimir las advertencias que pueden provocar una compilación errónea en jenkins
Alternativa para Gradle JavaDocs
Doxygen - herramienta de documentación de referencia cruzada.
podría ejecutarse desde la interfaz de usuario o terminal: http://www.stack.nl/~dimitri/doxygen/manual/doxygen_usage.html
Generando javadoc disponible lanzar herramienta java: '' javadoc ''
Ejecutar desde la línea de comando:
javadoc -d docs -sourcepath app/src/main/java -subpackages com
documentos - carpeta de destino
Pude enlazar con éxito a http://d.android.com/reference utilizando el siguiente fragmento de código que es funcionalmente exactamente lo que tienes (por lo que puedo decir).
android.libraryVariants.all { variant ->
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
// title = ''''
// description = ''''
source = variant.javaCompile.source
classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath())
options {
links "http://docs.oracle.com/javase/7/docs/api/"
linksOffline "http://d.android.com/reference","${android.sdkDirectory}/docs/reference"
}
exclude ''**/BuildConfig.java''
exclude ''**/R.java''
}
}
Así que hay algo más mal aquí.
Debe crear el javadoc fuera de línea, ya que no parece que la package-list
esté disponible en la ruta del servicio web. Tal vez compruebe que tenga los documentos cargados localmente y asegúrese de que haya una package-list
en el directorio /[android-sdk]/docs/reference
.
Si aún no puede resolverlo, tal vez podría publicar la salida.
Otra cosa que puede verificar es ./build/tmp/[taskname]/javadoc.options
, el head
de dicho archivo debe mostrar las opciones apropiadas cuidadosamente establecidas. Las cosas que se deben verificar incluirían la inclusión adecuada de android.jar en la ruta de clase y la presencia de linksOffline con los argumentos esperados: -linksoffline extDocURL packageListLoc
javadoc.options
debería tener ambas opciones con solo los argumentos respectivos:
-linksoffline ''http://d.android.come/reference'' ''[sdkDir]/docs/reference''
-links ''http://docs.oracle.com/javase/7/docs/api/''
EDITAR : android.getBootClasspath()
es mejor, gracias a P-chan.