Принудительно обновлять задачу JavaExec - PullRequest
0 голосов
/ 30 октября 2018

У меня есть пользовательская задача Gradle (с расширением JavaExec), которая должна использовать добавочное здание, чтобы не выполняться большую часть времени:

task printFoo(type: JavaExec) {
    inputs.dir ...
    outputs.upToDateWhen( { return true } );

    classpath = sourceSets.main.runtimeClasspath
    main = "mypackage.MyMain"
}

На первый взгляд, это прекрасно работает: когда я запускаю задачу дважды, она запускается только один раз. Если я отредактирую некоторые из входных файлов, они будут перезапущены.

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

Есть ли способ добиться такого поведения? Я пытался удалить файлы из inputs, но, видимо, они инициализируются после моего кода. Я также думал о том, чтобы поместить эту задачу в buildSrc, но это имеет ужасные последствия для зависимостей MyMain от остальной части проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...