将构建委托给gradle时,是否可以覆盖IntelliJ IDEA选择运行的gradle任务?

时间:2019-04-24 16:58:13

标签: java gradle intellij-idea querydsl

我正在使用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:classes,而类又依次运行:stepsapi:compileQuerydsl,该类来自querydsl gradle插件。我假设在querydsl插件中有一些东西可以正确设置类路径。

所以我的问题是,是否有一些IntelliJ IDEA设置或build.gradle设置,在其中我可以覆盖当将构建操作委托给gradle时将执行哪些gradle任务?

更新:这是一个github project,演示了此问题。

1 个答案:

答案 0 :(得分:0)

弄乱了一段时间之后,我将这个附加内容添加到build.gradle中:

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

这有效地阻止了gradle对IntelliJ IDEA坚持运行的:querydslClasses任务执行任何操作。

FWIW,querydsl gradle插件从gradle Java插件扩展了JavaCompile。通过这样做,它免费获得了诸如:querydslClasses和:compileQuerydslJava之类的任务。唯一的问题是,插件无需费心地使这些“免费”任务开箱即用。但是,它确实有一些技巧,只要您仅指定诸如:build之类的任务,插件就可以正常工作。