Можно ли переопределить задачи Gradle, которые IntelliJ IDEA выбирает для запуска при делегировании сборки в Gradle? - PullRequest
0 голосов
/ 24 апреля 2019

Я использую IntelliJ IDEA 2019.1.1. Сборки теперь делегируются в gradle по умолчанию. По большей части мне нравится эта идея, но для одного из моих проектов эта делегация, по-видимому, вызывает проблему сборки. Я вижу это в выводе сборки:

10:09:23 AM: Executing tasks ':scanrunner:testClasses :policyconsole:testClasses :scanrunner:classes :policyconsole:classes :stepsapi:querydslClasses :service-core:classes :service-core:testClasses :stepsapi:classes :stepsapi:testClasses'...

Похоже, что IntelliJ выбирает эти задачи для автоматического запуска из моего build.gradle. Проблема в том, что выполнение задачи ': stepsapi: querydslClasses', как это всегда приводит к ошибкам компиляции. После запуска этой задачи в режиме --debug я вижу, что путь к классу неверен, все файлы не компилируются. Сборка будет работать нормально, если эта задача просто пропущена следующим образом:

./gradlew :scanrunner:testClasses :policyconsole:testClasses :scanrunner:classes :policyconsole:classes :service-core:classes :service-core:testClasses :stepsapi:classes :stepsapi:testClasses

При выполнении этого способа gradle запускает: stepsapi: классы, которые, в свою очередь, запускают: stepsapi: compileQuerydsl, который поступает из плагина grads querydsl. Я предполагаю, что в плагине querydsl есть что-то, что правильно устанавливает classpath.

Итак, мой вопрос: есть ли какой-либо параметр IntelliJ IDEA или параметр build.gradle, где я могу переопределить, какие задачи gradle будут выполняться, когда действие сборки передается gradle?

обновление: вот проект github , который демонстрирует эту проблему.

1 Ответ

0 голосов
/ 26 апреля 2019

Поработав некоторое время, я собираюсь добавить это в build.gradle:

project.afterEvaluate {
    project.tasks.compileQuerydslJava {
        onlyIf {false}
    }
}

Это эффективно препятствует тому, чтобы gradle что-либо делал с задачей :querydslClasses, на которой настаивает IntelliJ IDEA.

FWIW, плагин gradle для querydsl расширяет JavaCompile из плагинов gradle Java. Делая это, он получает такие задачи, как: querydslClasses и: compileQuerydslJava бесплатно. Единственная проблема заключается в том, что плагин не заботится о том, чтобы эти «бесплатные» задачи работали «из коробки». Однако он делает некоторые трюки, чтобы плагин работал до тех пор, пока вы задали только такие задачи, как: build.

...