当前位置: 首页 > 知识库问答 >
问题:

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

容寒
2023-03-14

我正在使用IntelliJ IDEA 2019.1。1.默认情况下,Builds现在委托给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正在选择从我的构建中自动运行这些任务。格拉德尔。问题是这样运行任务“: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,而这些类又会运行来自querydsl gradle插件的:stepsapi:compileQuerydsl。我假设querydsl插件中有正确设置类路径的东西。

所以我的问题是,是否有一些IntelliJ创意设置或构建。gradle设置,在该设置中,我可以覆盖将生成操作委托给gradle时将执行哪些gradle任务?

更新:这是一个演示这个问题的github项目。

共有1个答案

百里俭
2023-03-14

在搞乱了一段时间之后,我要用这个新的来构建。格拉德尔:

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

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

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

 类似资料:
  • 主要内容:执行多个任务,排除任务,发生故障时继续构建,选择执行哪些构建,获取构建信息Gradle提供了一个命令行来执行构建脚本。 它可以一次执行多个任务。在这里将介绍如何使用不同的选项来执行多个任务。 执行多个任务 可以从单个构建文件执行多个任务。使用命令处理构建文件。此命令将按列出的顺序编译每个任务,并使用不同的选项执行每个任务以及依赖关系。 示例 - 假设有四个任务 - ,,和。和取决于和。 看看下面的图表。 在上面的四个任务是相互依赖的,用一个箭头符号表示。 看看下面的代码

  • 在Kotlin中使用类委托时,可以覆盖成员。然而,关于代表团的参考页上说: 但是,请注意,以这种方式重写的成员不会从委托对象的成员中调用,委托对象只能访问其自己的接口成员实现。 我想重写委托对象的方法使用的属性,以便委托对象的方法调用此重写属性。正如文档所述,用关键字覆盖属性并不能实现这一点。有什么方法可以让我实现这种行为吗?如果不是,这是否表明我应该改用继承? 这是一个代码示例: 这段代码打印“

  • 调用 gradle 命令时, 默认情况下总是会构建当前目录下的文件, 可以使用 -b 参数选择其他目录的构建文件, 并且当你使用此参数时 settings.gradle 将不会生效, 看下面的例子: 例 11.5. 选择文件构建 subdir/myproject.gradle task hello << { println "using build file '$buildFile.nam

  • 我有一组可以以任何顺序运行的分级任务,我将它们分组为3个集a、B和C 有办法运行特定的任务组吗?就像我只想运行一个,一个B,可能是一个和一个B的组合

  • 在Groovy中,我重写了这样一个任务: 如何使用Kotlin dsl?我知道我可以创建这样的任务: 但是我找不到等价的方法来声明它为overwrite,这导致了一个错误

  • 我试图用vba做一个按钮来删除Excel表中的一行,但当我按下按钮并选择不止一行或许多单元格时,我想限制从E到I的选择(和行的数量无关)这里是我的代码,非常感谢,希望你能帮助我,我还没有找到任何类似的东西。