La anotación javadoc de Gradle para Android no existe
android-gradle (5)
Desde la introducción de la api
y la configuración de dependencia de implementation
en Android Gradle 3.0.0 , la compile
está en desuso. Para incluir una dependencia de implementation
en la ruta de share javadoc, actualicé la share :
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
configurations.implementation.setCanBeResolved(true)
classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + configurations.implementation
}
No espero que esta sea la solución más limpia posible. Probablemente hay una razón por la que la configuration.implementation
no se puede resolver de forma predeterminada.
Estoy tratando de construir un aar para publicar en jcenter.
La tarea assembleRelease funciona bien, la tarea javadoc también funciona bien, pero la tarea javadocJar genera este error:
/Users/martinmoreno/Projects/android-dev-utils/dev-utils/src/main/java/com/tinchoapps/devutils/BitmapUtils.java:11: error: el paquete android.support.annotation no existe
importar android.support.annotation.NonNull;
Aquí está el archivo de gradle (simplificado):
apply plugin: ''com.android.library''
apply plugin: ''com.github.dcendents.android-maven''
android {
...
buildTypes {
release {
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
signingConfig signingConfigs.debug
}
}
...
}
...
dependencies {
compile fileTree(include: [''*.jar''], dir: ''libs'')
compile ''com.android.support:support-annotations:20.0.0''
compile ''com.android.support:support-v4:22.0.0''
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = ''sources''
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
destinationDir = file("../javadoc/")
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = ''javadoc''
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
Parece estar relacionado con las dependencias porque está dando algunas excepciones de "clase no encontrada" también en las clases dentro de las importaciones, pero no puede averiguar qué está mal.
¿Alguna idea?
Esto corrigió varios errores similares para mí:
Agregue lo siguiente a build.gradle:
configurations {
javadocDeps
}
dependencies {
compile ''com.android.support:support-annotations:22.2.0''
javadocDeps ''com.android.support:support-annotations:22.2.0''
androidTestCompile ''junit:junit:4.+''
androidTestCompile ''com.jayway.android.robotium:robotium-solo:+''
}
En la tarea JavaDoc agregar esta línea:
classpath += configurations.javadocDeps
He enfrentado esto mientras ejecutaba ./gradlew install
. Ocurría cuando se estaban compilando los JavaDocs (hasta donde puedo entender).
Acabo de agregar failOnError false
a la task javadoc
.
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
failOnError false
}
Lo que entiendo es que evitamos fallas en las advertencias de que no se pudo encontrar la biblioteca de anotaciones.
Siguiendo la respuesta de Markus, así es como tuve que hacerlo para que funcione:
configurations {
javadocDeps
}
dependencies {
compile ''com.android.support:support-annotations:25.3.1''
javadocDeps ''com.android.support:support-annotations:25.3.1''
}
tasks.whenTaskAdded { task ->
if (task.name == ''androidJavadocs'') {
task.configure {
classpath += configurations.javadocDeps
}
}
}
Solo agregue esta línea en su tarea javadoc (note la última parte: + configurations.compile
):
classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + configurations.compile
La última parte de la línea se asegura de que javadoc use las dependencias de compilación para resolver las clases que usa para javadoc. En este punto, ya no debería fallar.