我在ubuntu上尝试使用Intellij 2016.1中的Dagger2(但不是使用gradle)。
Intellij在两者中创建了匕首生成的源
./out/production/<ProjectModule>/generated/
或
./out/test/<ProjectModule>/generated_tests/
取决于它是分别是从源目录还是测试目录生成的。
但据我所知,我只能将这些目录标记为sources root
,test sources root
或generated sources root
; generated test sources root
没有选项,比如说。
为什么这很重要?因为生成的测试源依赖于我的测试源。如果它们被标记为generated sources root
,则Intellij无法找到依赖项。
注意:我认为它们不应该被标记为test sources root
,因为那时Intellij会再次尝试编译它们;除非有某种方法可以防止我不知道这一点。
那么有没有办法将此目录标记为generated test sources root
或类似的东西?
答案 0 :(得分:5)
要将一个行为标记为&#34;生成测试源root&#34;,打开&#34;项目结构&#34; “项目设置”对话框&gt;模块并点击小&#34; P&#34;在您选择的文件夹旁边,选择&#34;对于生成的资源&#34;按钮。
答案 1 :(得分:0)
Dagger使用注释处理在编译期间生成源。 IntelliJ在Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
中针对此功能进行了特定配置
启用后,IntelliJ会自动将生成的源添加到项目中。
启用注释处理后,我可以看到生成的测试源标记为Test Sources Root
和Generated Sources Root
。但是当我尝试手动设置两个标志时它不起作用 - 我得到标记Sources Root
和Generated Sources Root
。
对我而言,这看起来像个错误。
答案 2 :(得分:0)
这对我有用。在名为generated
的模块根目录中创建一个目录,在其下面有两个<ProjectRoot>/out/production/<ProjectModule>/generated/
和<ProjectRoot>/out/test/<ProjectModule>/generated_tests/
的simlink。将第一个标记为资源根,将第二个标记为测试资源根。
我创建了新目录和simlinks,因为它显示Intillij自动将<ProjectRoot>/out
标记为已排除。
我将目录标记为测试资源 Root ,以便Intellij不会尝试将源编译两次到同一个类。 (提示:编译器抱怨很大。)
最后,没有红色曲线和自动完成工作。
注意:我没有更改Intellij为模块生成的源目录。 (好吧,我确实尝试了另一个答案,但改回来了。)