Gradle – Какая задача создает каталог сборки?

Я использую Android Studio 1.3.2 на Mac.

Версия Gradle указана как 2.2.1, версия Android Plugin 1.3.1.

Я применил плагин FindBugs Gradle , и я создал задачу, которая успешно выполнила анализ каталога build/intermediates/classes.

Чтобы запустить эту задачу в Gradle Sync, я добавил ее как зависимость к задаче preBuild, например так:

preBuild.dependsOn findBugs

Проблема с этой зависимостью заключается в том, что во время предварительной сборки сгенерированные файлы классов либо не существуют (первая синхронизация), либо устарели (остались от предыдущей синхронизации). По сути, я хочу, чтобы моя задача запускалась сразу после создания каталога build/intermediates/classes или при обновлении файлов в рамках операции "Синхронизация".

Глядя на доступные задачи, я вижу, что «чистая» задача имеет следующее описание:

clean - Deletes the build directory.

Однако ни одна из других задач, которые я вижу, не описывает создание каталога. Моей первой мыслью было: «Ну, это должна быть задача сборки, верно?». К сожалению, как обычно, это не так просто (нажатие кнопки «синхронизация» gradle не запускает мою задачу, когда я добавил ее в качестве зависимости к задаче «сборки»). Нет такой задачи? Если да, то какая задача лучше всего подходит для того, чего я пытаюсь достичь?


person user3829751    schedule 04.09.2015    source источник


Ответы (1)


Вы можете просмотреть все задачи, используя ./gradlew tasks

Задача сборка является основной. Он все строит, генерирует APK и выполняет все проверки.

Я рекомендую вам добавить в файл build.gradle следующее:

check.dependsOn 'findbugs'

Таким образом, когда вы запускаете задачу check, она также выполняет поиск ошибок.

Затем также установите зависимость от findBugs для задачи компиляции:

task findbugs(type: FindBugs, dependsOn: 'compileDebugSources') {...}

Это скомпилирует исходный код на случай, если вы запустите findbugs без его предварительной компиляции.

person fhsilva    schedule 04.09.2015
comment
Даже при добавлении моей задачи в качестве зависимости для сборки или проверки задачи нажатие кнопки синхронизации gradle не запускает мою задачу. Единственная задача, которую я нашел, которая делает это, это preBuild. Но это слишком рано, так как каталог build/intermediates/classes еще не добавлен и не обновлен. И попытка добавить зависимость к последующим задачам выдает ошибки. Я надеялся, что я что-то пропустил, но, похоже, мне придется довольствоваться запуском при нажатии кнопки запуска. Наверное, так все-таки логичнее. Спасибо за быстрый ответ! - person user3829751; 05.09.2015
comment
Я рекомендую вам попробовать запустить его из командной строки, чтобы проверить разницу. Конфигурация Android Studio иногда может быть немного сложной, но командная строка должна работать. - person fhsilva; 05.09.2015