Ho un progetto di libreria Android che dipende da altri progetti di libreria Android. Ho bisogno di generare javadoc per la libreria, ma fallisce perché gradle mette su javadoc classpath path in posizioni .aar ma javadoc si aspetta file .jar.Come generare javadoc per la libreria Android quando ha dipendenze che sono anche librerie di aar?
semplificata di file Gradle:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
configurations {
javadocDeps
}
defaultConfig {
minSdkVersion 7
targetSdkVersion 23
versionCode 1
versionName "0.1.0"
}
}
dependencies {
compile 'com.android.support:support-v4:23.2.0'
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.annimon:stream:1.0.7'
javadocDeps 'com.android.support:support-annotations:23.2.0'
javadocDeps 'com.nineoldandroids:library:2.4.0'
javadocDeps 'com.android.support:support-v4:23.2.0'
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc, dependsOn: explodeAars) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
classpath += configurations.javadocDeps
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
3 possibili soluzioni:
1) in qualche modo da aggiungere al classes.jar percorso classpath da ogni biblioteca AAR dipende costruire/intermidiates/esplosa-AAR/library /version/jars/classes.jar Non so come includere questi percorsi nell'attività javadoc.
2) decomprimere manualmente classes.jar da file AAR e aggiungerli al classpath di javadoc compito
3) molto sporchi Hack - hardcoded percorsi mediante la libreria - ma penso che questo è così sbagliato.
Come ottenere 1 o 2 con gradle dsl?
Stai usando Android Studio? C'è in Strumenti> Genera JavaDoc uno strumento utile per selezionare ciò che la javadoc deve fare. – xiaomi
Io uso Android Studio ma questa operazione deve essere eseguita automaticamente sull'istanza di jenkins remota. Questa attività è stata utilizzata per caricare la libreria su jcenter/mavenCentral – curioushikhov