Как я могу гарантировать, что задача processResources сборки gradle выполняется всегда?

#gradle

#gradle

Вопрос:

У нас есть странная проблема, когда случайным образом и нечасто выполняется задача compileJava, которая удаляет папку META-INF и скомпилированные классы для запуска, но задача processResources сообщает об актуальности, хотя каталог META-INF явно не существует.

Это занимает у нас много времени, потому что возможно, что артефакты дойдут до производства без applicationContext.xml !

Для нас выполнение этой задачи обходится очень дешево, возможно ли заставить ее выполняться, несмотря ни на что?

Комментарии:

1. Gradle 1.0-milestone-5 и более поздние версии размещают файлы классов и ресурсы в разные каталоги (build/ classes и build / resources). Было бы хорошо знать, решает ли это вашу проблему, не используя обходной путь.

Ответ №1:

Возможно, есть какая-то ошибка, из-за которой не удается очистить кеш gradle. Одним из возможных решений было бы сначала заставить задачу очистить свой собственный вывод путем запуска cleanProcessResources .

Если это не сработает, попробуйте переопределить upToDateWhen предикат выходных данных вашей задачи следующим образом:

 processResources.outputs.upToDateWhen{ false }
  

Однако я не знаю, является ли этот API постоянным.

Комментарии:

1. Я очень надеюсь, что это так. Это ПОТРЯСАЮЩЕ.