2016-01-02 5 views
9

Я пытаюсь подготовить и загрузить свой Android библиотеку Bintray и часть этого процесса выполняет следующую JavaDoc задачу:Android Студия Javadoc: Не удается найти символ

task javadoc(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

Эта задача является частью более крупного Gradle сценария здесь: https://raw.githubusercontent.com/attwellBrian/JCenter/master/bintrayv1.gradle

при выполнении javadoc задачи, возникают следующие проблемы:

  1. Каждый @NonNull и @Nullable аннотаций в т он проект сообщает ошибку «ошибка: не удается найти символ»
  2. Каждая ссылка Javadoc я написал для Android класса, как {@link Toolbar}, сообщает ошибку «ошибка: ссылка не найдена»

Как исправить эти проблемы при создании Javadocs?

EDIT Похоже, его не все Android класса ссылок, которые создают проблему, это может быть просто классы, которые приходят из библиотеки Android поддержки (которая также где аннотации приходят из). Нужно ли что-то особенное делать для ссылки на исходные файлы в зависимости от градиентов?

ответ

18

Вы также должны добавить всю свою зависимость к javadoc.classpath. Попробуйте это:

task javadoc(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

afterEvaluate { 
    javadoc.classpath += files(android.libraryVariants.collect { variant -> 
     variant.javaCompile.classpath.files 
    }) 
} 
+1

Добра пожаловать в StackOverflow, пожалуйста, не просто разместить код, но и объяснить что делает ваш код и почему он работает. –

+0

Можете ли вы объяснить, почему мы должны добавлять эти файлы в «afterEvaluate» вместо того, чтобы добавлять их непосредственно в задачу «javadoc()»? – MattC

+0

К сожалению, тело задачи javadoc вызывается до того, как «android.libraryVariants» заполнен. Поэтому нам нужно подождать, пока не будет заполнено 'android.libraryVariants'. – xkor

0

Таким образом, эти ошибки означают, что JavaDoc не может связать классы, которые не находятся в том же модуле (без дополнительной конфигурации). Если вы не заботитесь об этом (то есть., Имеющая гиперссылка на классы вне модуля) вы можете просто игнорировать ошибки с

task javadoc(type: Javadoc) { 
    failOnError false 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

See here for more info on the Javadoc Task

Смежные вопросы