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

Mik*_*der 25 intellij-idea gradle

使用IntelliJ打开build.gradle文件,在"从Gradle导入项目"窗口中,"Excluded Roots"预先填充了.gradlebuild目录.

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

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

详细信息: IntelliJ 12.1.3,Gradle 1.4

Pet*_*ser 25

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")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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


Tim*_*nov 11

另一种方法.与Idea 13一起使用.

idea.module {
     excludeDirs -= file(buildDir) //1
     buildDir.listFiles({d,f->f != 'generated-sources'} as FilenameFilter).each {excludeDirs += it}} //2
Run Code Online (Sandbox Code Playgroud)
  1. buildDir从中移除excludeDirs.
  2. 排除每个buildDir孩子(除外generating-source).