如何使用Gradle指定IntelliJ排除目录?

时间:2013-05-22 21:47:03

标签: intellij-idea gradle

使用IntelliJ打开build.gradle文件,在“从Gradle导入项目”窗口中,“排除的根”预先填充了.gradlebuild目录。

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

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

详细信息:IntelliJ 12.1.3,Gradle 1.4

4 个答案:

答案 0 :(得分:23)

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")
        }
    }
}

如果协议缓冲区插件支持,可能更容易将生成的源放到build之外的位置,并使clean任务知道该位置(例如clean.delete "generated-sources" )。

答案 1 :(得分:11)

另一种解决方案。与Idea 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除外)。

答案 2 :(得分:0)

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

idea {
  module {
    excludeDirs.add(file("..."))
  }
}

答案 3 :(得分:0)

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

idea {
    module.apply {
        val file = file("$projectDir/node_modules")
        val exclude = HashSet<File>(excludeDirs)
        exclude.add(file)
        excludeDirs = exclude
    }
}