我正在ubuntu上试用Intellij 2016.1中的Dagger2 (但不是gradle)。
Intellij分别在./out/production/<ProjectModule>/generated/
或./out/test/<ProjectModule>/generated_tests/
中创建dagger的生成源,具体取决于它是从源目录还是从测试目录生成的。
但据我所知,我只能将这些目录标记为sources root
、test sources root
或generated sources root
;比方说,generated test sources root
没有选择。
为什么这很重要?因为生成的测试源依赖于我的测试源。如果它们被标记为generated sources root
,那么Intellij就无法找到依赖项。
注意:我认为不应该将它们标记为test sources root
,因为Intellij会再次编译这些代码;除非有某种方法可以防止这种情况发生,而我对此一无所知。
那么,是否有一种方法将该目录标记为generated test sources root
或类似的东西?
发布于 2016-08-10 21:52:52
若要将“生成测试源根”标记为“生成测试源根”,请打开Project > Modules中的“”对话框,然后单击所选文件夹旁边的小"P“,然后选择”“按钮。
发布于 2016-07-25 14:27:46
在编译期间,Dagger使用注释处理来生成源。当IntelliJ启用时,Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
中的这个特性有一个特定的配置,IntelliJ会自动向项目中添加生成的源。
在启用注释处理之后,我可以看到生成的测试源被标记为Test Sources Root
和Generated Sources Root
。但是,当我尝试手动设置这两个标志时,它就不起作用了--我得到了标志Sources Root
和Generated Sources Root
。
对我来说就像一只虫子。
发布于 2016-07-25 14:44:24
这就是对我有用的东西。在模块根目录中创建一个名为generated
的目录,它下面有两个指向<ProjectRoot>/out/production/<ProjectModule>/generated/
和<ProjectRoot>/out/test/<ProjectModule>/generated_tests/
的简单链接。将第一个标记为资源根,第二个标记为测试资源根。
我创建了新的目录和simlink,因为它显示为Intillij自动标记<ProjectRoot>/out
,而排除了。
我将目录标记为 Resource ,这样Intellij就不会尝试将源代码编译两次到同一个类。(提示:编译器发出很大的抱怨。)
最后,没有红色的垃圾和自动完成的作品。
注意:我没有更改Intellij为模块生成的源目录。(嗯,我确实尝试了另一个答案,但改回来了。)
https://stackoverflow.com/questions/38561161
复制相似问题