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

Intellij idea 如何使用Gradle指定IntelliJ排除目录?,intellij-idea,gradle,Intellij Idea,Gradle,使用IntelliJ打开build.gradle文件,在“从gradle导入项目”窗口中,“排除的根”预先填充.gradle和build目录 如何在build.gradle文件中指定应排除(或不排除)哪些目录 具体来说,我使用的是一个协议缓冲区插件,它将生成的源代码放在/build/generated sources/目录中。如果build目录被排除,则我的源类看不到生成的类 详细信息:IntelliJ 12.1.3,Gradle 1.4如中所示,您可以配置idea.module.exclude

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

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

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

详细信息:IntelliJ 12.1.3,Gradle 1.4

如中所示,您可以配置
idea.module.excludeDirs
属性,该属性的类型为
List
。显然IDEA不支持包含被排除目录的子目录,因此您必须排除
构建/生成源的所有同级。例如:

idea {
    module {
        excludeDirs = [file(".gradle")]
        ["classes", "docs", "dependency-cache", "libs", "reports", "resources", "test-results", "tmp"].each {
            excludeDirs << file("$buildDir/$it")
        }
    }
}
创意{
模块{
excludeDirs=[文件(“.gradle”)]
[“类”、“文档”、“依赖缓存”、“库”、“报告”、“资源”、“测试结果”、“tmp”]。每个{

excludeDirs另一个解决方案。与Idea 13一起使用

idea.module {
     excludeDirs -= file(buildDir) //1
     buildDir.listFiles({d,f->f != 'generated-sources'} as FilenameFilter).each {excludeDirs += it}} //2
  • excludeDirs
    中删除
    buildDir
  • 排除每个
    buildDir
    子级(生成源代码的
    除外)

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

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

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

    idea {
        module.apply {
            val file = file("$projectDir/node_modules")
            val exclude = HashSet<File>(excludeDirs)
            exclude.add(file)
            excludeDirs = exclude
        }
    }
    
    创意{
    模块.apply{
    val文件=文件($projectDir/node_模块)
    val exclude=HashSet(excludeDirs)
    排除.add(文件)
    excludeDirs=排除
    }
    }
    
    不幸的是,生成的源代码目录被硬编码到插件中。我没有使用gradle的Idea插件,我是使用IntelliJ 12的本机功能打开项目的。当我以这种方式打开它时,这会起作用吗?JetGradle显然会在设置项目时考虑到这一点。我认为只有在运行build
    下的文件后执行de>idea
    任务-不进行干净签出。这只是管理项目布局中包含/排除的dir。idea不会保存我基于gradle的项目的布局。再次启动后,
    buildDir
    将再次从布局中排除。这几行代码修复了它。对于e使用IDEA中内置的gradle导入功能(即不是gradle插件)-投票支持