Подтвердить что ты не робот

Как сделать Gradle сбой сборки, если зависимость файла не найдена?

У меня есть сборка Gradle, которая имеет некоторые зависимости формы

compile files('path/to/local/lib.jar')

(сборка мигрируется - в конечном итоге они будут заменены)

Ошибка сборки, потому что один из этих путей был неправильно указан. Но он не удался из-за ошибки компиляции - он выглядел как Gradle молча игнорировал отсутствующую зависимость.

Есть ли простой параметр или переключатель, который заставит Gradle сбой сборки, если какая-либо зависимость (особенно локальные зависимости файлов) не может быть решена (например, файл отсутствует)?

Изменить: уточнить:

Если зависимость не может быть найдена в сконфигурированных репозиториях, Gradle приведет к сбою сборки при попытке решить их, как и ожидалось.

НО - если зависимость определяется как "компилировать файлы...", а указанный файл не существует во время сборки, Gradle будет IGNORE этой ошибкой и в любом случае попытаться выполнить компиляцию. Это кажется эффектно неправильным и непоследовательным поведением по умолчанию.

Мой вопрос: есть ли параметр Gradle или переменная или переменная среды или системное свойство, которое я могу установить для принудительного использования Gradle, чтобы проверить, существуют ли зависимости файлов? (Например, вести себя разумно и рационально?)

4b9b3361

Ответ 1

Чтобы выполнить сбой сборки, вы можете:

ant.fail('message why it failed')

Затем вы можете создать условие, а затем выполнить сбой с хорошим сообщением;)

Я бы предложил создать задачу, которая сначала перенесет файл в проект с условием проверки наличия файла и т.д., если он затем не выкинет исключение Gradle и не завершит сборку с сообщением и выполнит задача сначала на этапе выполнения.

У меня нет возможности проверить это сейчас, но это может быть что-то вроде этого, исправьте меня, если какой-либо синтаксис неверен, но вы должны получить эту идею.

def yourDep = $/\path\to\your\depdendency/$

task bringDeps << {

  if (yourDep.exists()){
    copy {
      from yourDep
      into $projectDir/depsOrSmthg
    }
  } else{
  ant.fail('message why it failed')
  }

}