31

使用 IntelliJ 打开build.gradle文件,在“Import Project from Gradle”窗口中,“Excluded Roots”预填充了.gradlebuild目录。

如何指定文件中应排除(或不排除)哪些目录build.gradle

具体来说,我正在使用一个协议缓冲区插件,它将生成的源代码放在/build/generated-sources/目录中。如果该build目录被排除,那么我的源类看不到生成的类。

详细信息: IntelliJ 12.1.3、Gradle 1.4

4

4 回答 4

31

Gradle Build Language Reference中所示,您可以配置idea.module.excludeDirs属性,该属性为List<File>. 显然 IDEA 不支持包含排除目录的子目录,因此您必须排除build/generated-sources. 例如:

idea {
    module {
        excludeDirs = [file(".gradle")]
        ["classes", "docs", "dependency-cache", "libs", "reports", "resources", "test-results", "tmp"].each {
            excludeDirs << file("$buildDir/$it")
        }
    }
}

如果Protocol Buffer 插件支持,将生成的源放到一个外部的地方可能会更容易build,并让clean任务知道那个地方(例如clean.delete "generated-sources")。

于 2013-05-22T22:17:32.673 回答
12

另一种解决方案。适用于理念 13。

idea.module {
     excludeDirs -= file(buildDir) //1
     buildDir.listFiles({d,f->f != 'generated-sources'} as FilenameFilter).each {excludeDirs += it}} //2
  1. buildDir从中删除excludeDirs
  2. 排除每个buildDir孩子(除了generating-source)。
于 2014-01-19T22:48:34.670 回答
0

如果您使用的是 Gradle Kotlin DSL,请使用以下代码段:

idea {
  module {
    excludeDirs.add(file("..."))
  }
}
于 2020-01-13T14:29:47.967 回答
0

对于我正在使用的模块中的排除文件夹

idea {
    module.apply {
        val file = file("$projectDir/node_modules")
        val exclude = HashSet<File>(excludeDirs)
        exclude.add(file)
        excludeDirs = exclude
    }
}
于 2021-04-14T08:15:01.230 回答