在使用gradle进行编译时,如何在intellij中包含构建目录作为源目录

时间:2014-01-08 17:29:56

标签: java intellij-idea gradle build

默认情况下,gradle idea插件将build文件夹标记为已排除。如何将此文件夹包含为源文件夹? (或者避免将其排除,因为它似乎是默认情况......)

在我的模块build.gradle文件中,我尝试了以下两种配置:

idea {
    module {
        excludeDirs -= file('build/generated')
    }
}

idea {
    module {
        sourceDirs += file('build/generated')
    }
}

使用这两种配置,编译后,文件夹构建/生成始终在IntelliJ中显示为排除文件夹。 在IntelliJ中,我总是必须进入“项目设置”,“模块”,然后在“源”选项卡中从已排除的文件夹中删除构建文件夹并让我的项目运行。

5 个答案:

答案 0 :(得分:15)

您肯定希望在IntelliJ中排除build目录。否则,索引将花费更长时间,您将在搜索中获得重复等。由于IntelliJ不支持包含排除目录的子目录,因此我首选的解决方案是将生成的文件放入build之外的目录中。例如,您可以将它们放入generated(相对于项目目录),并相应地配置clean任务:

clean {
    delete "generated"
}

另一个选项是排除buildbuild/generated以外的所有子目录。但是,鉴于需要明确列出要排除的目录,这需要付出更多努力,并且存在易碎的风险。 (每次插件/任务/等添加新的子目录时,您都不希望这种情况中断。)

答案 1 :(得分:6)

更改代码
file('build/generated')

file("$buildDir/generated")

我在这里使用的是一个有效的代码:

ext {
    cxfOutputDir = file("$buildDir/generated-sources/cxf")
}
idea.module {
    excludeDirs -= file("$buildDir")
    sourceDirs += cxfOutputDir
}

答案 2 :(得分:1)

这对我有用!

apply plugin: 'idea'

idea {
    module {
        excludeDirs -= buildDir
    }
}

答案 3 :(得分:0)

为生成的源代码使用标准位置 - 无需其他配置即可支持:

${project.buildDir}/generated-sources/something

${project.buildDir}/generated-test-sources/something

仅用于测试的生成代码。

something表示技术,例如: jpamodel cxf 等。

答案 4 :(得分:0)

第一种方法

['integration/src/generated'].each {
            idea.module.sourceDirs += file(it)
            sourceSets.main.java.srcDir it
            compileJava.source file(it)
    }

第二种方法

project.ext {
        jaxbTargetDir = file("src/generated/java")
}

idea.module {
        excludeDirs -= file("$buildDir")
        sourceDirs += jaxbTargetDir
}