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

RiR*_*ain 10 java build intellij-idea gradle

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

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

idea {
    module {
        excludeDirs -= file('build/generated')
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

idea {
    module {
        sourceDirs += file('build/generated')
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*ser 15

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

clean {
    delete "generated"
}
Run Code Online (Sandbox Code Playgroud)

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


小智 6

改变代码

file('build/generated')
Run Code Online (Sandbox Code Playgroud)

file("$buildDir/generated")
Run Code Online (Sandbox Code Playgroud)

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

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