如何在IntelliJ中将目录标记为生成测试源根?

时间:2016-07-25 06:38:42

标签: intellij-idea

我在ubuntu上尝试使用Intellij 2016.1中的Dagger2(但不是使用gradle)。

Intellij在两者中创建了匕首生成的源 ./out/production/<ProjectModule>/generated/./out/test/<ProjectModule>/generated_tests/取决于它是分别是从源目录还是测试目录生成的。

但据我所知,我只能将这些目录标记为sources roottest sources rootgenerated sources root; generated test sources root没有选项,比如说。

为什么这很重要?因为生成的测试源依赖于我的测试源。如果它们被标记为generated sources root,则Intellij无法找到依赖项。

注意:我认为它们不应该被标记为test sources root,因为那时Intellij会再次尝试编译它们;除非有某种方法可以防止我不知道这一点。

那么有没有办法将此目录标记为generated test sources root或类似的东西?

3 个答案:

答案 0 :(得分:5)

要将一个行为标记为&#34;生成测试源root&#34;,打开&#34;项目结构&#34; “项目设置”对话框&gt;模块并点击小&#34; P&#34;在您选择的文件夹旁边,选择&#34;对于生成的资源&#34;按钮。

Project Structure

答案 1 :(得分:0)

Dagger使用注释处理在编译期间生成源。 IntelliJ在Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors中针对此功能进行了特定配置 启用后,IntelliJ会自动将生成的源添加到项目中。

启用注释处理后,我可以看到生成的测试源标记为Test Sources RootGenerated Sources Root。但是当我尝试手动设置两个标志时它不起作用 - 我得到标记Sources RootGenerated Sources Root

对我而言,这看起来像个错误。

答案 2 :(得分:0)

这对我有用。在名为generated模块根目录中创建一个目录,在其下面有两个<ProjectRoot>/out/production/<ProjectModule>/generated/<ProjectRoot>/out/test/<ProjectModule>/generated_tests/的simlink。将第一个标记为资源根,将第二个标记为测试资源根

我创建了新目录和simlinks,因为它显示Intillij自动将<ProjectRoot>/out标记为已排除

我将目录标记为测试资源 Root ,以便Intellij不会尝试将源编译两次到同一个类。 (提示:编译器抱怨很大。)

最后,没有红色曲线和自动完成工作。

注意:我没有更改Intellij为模块生成的源目录。 (好吧,我确实尝试了另一个答案,但改回来了。)