Android Gradle аннотации javadoc не существует
Я пытаюсь создать aar для публикации в jcenter.
Задача assembleRelease работает нормально, задача javadoc также отлично работает, но задача javadocJar выводит эту ошибку:
/Users/martinmoreno/Projects/android-dev-utils/dev-utils/src/main/java/com/tinchoapps/devutils/BitmapUtils.java:11: error: package android.support.annotation does not exist
import android.support.annotation.NonNull;
Вот (упрощенный) gradle файл:
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
}
Похоже, что это связано с зависимостями, потому что он дает некоторые исключения "class not found" тоже для классов внутри импорта, но не может понять, что неправильно.
Любые мысли?
Ответы
Ответ 1
Это фиксировало различные аналогичные ошибки для меня:
Добавьте следующую команду 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:+'
}
В Задаче JavaDoc добавьте эту строку:
classpath += configurations.javadocDeps
Ответ 2
Просто добавьте эту строку в свою задачу javadoc (обратите внимание на последнюю часть: + configurations.compile
):
classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + configurations.compile
Последняя часть строки гарантирует, что javadoc использует зависимости компиляции для разрешения классов, которые он использует для javadoc. На этом этапе это не должно терпеть неудачу.
Ответ 3
Я столкнулся с этим при запуске ./gradlew install
. Это происходило при компиляции JavaDocs (насколько я понимаю).
Я просто добавил failOnError false
в task javadoc
.
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
failOnError false
}
Я понимаю, что мы избежали ошибок при предупреждении о невозможности найти библиотеку аннотаций.
Ответ 4
Следуя от ответа Маркуса, так я должен был сделать это, чтобы он работал:
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
}
}
}