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

问题描述 投票:0回答:1

我正在使用IntelliJ IDEA 2019.1.1。现在,构建默认委托给gradle。在大多数情况下,我喜欢这个想法但是对于我的一个项目,这个代表团对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:来自querydsl gradle插件的compileQuerydsl。我假设querydsl插件中有一些东西可以正确设置类路径。

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

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

java gradle intellij-idea querydsl
1个回答
0
投票

在搞乱了一段时间后,我将继续使用build.gradle:

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

这有效地防止gradle对IntelliJ IDEA坚持运行的:querydslClasses任务做任何事情。

FWIW,querydsl gradle插件从gradle Java插件扩展JavaCompile。通过这样做,它可以免费获得以下任务:querydslClasses和:compileQuerydslJava。唯一的问题是插件并不打算让这些“免费”任务开箱即用。但它做了一些技巧,只要你只指定像build这样的任务,插件就能运行。

© www.soinside.com 2019 - 2024. All rights reserved.