我一直试图让IntelliJ的编译告诉我使用Play Framework 2.3.3和Scala 2.11.2的多模块项目中的源代码中的错误 - IntelliJ是版本13.1。 4(最新稳定,终极版)。
多模块项目的布局非常类似于Adrian Hurt的play-multidomain-seed项目,请参阅https://github.com/adrianhurt/play-multidomain-seed或在Typesafe Activator中进一步参考。层次结构如下所示:
/root
/app
...
/conf
...
/modules
/module1
/app
...
/conf
...
/module2
/app
...
/conf
...
根项目有一个build.sbt
以及一个包含Scala对象的项目目录,该对象包含要在构建过程中使用的常用设置和帮助程序方法。每个子项目都位于modules
文件夹中,并且还有build.sbt
,build.sbt
在根级别引用。
现在,如果我使用前面提到的play-multidomain-seed
项目模板,我可以使用activator
/ sbt
完成所有操作并正常运行。使用"导入SBT项目"将项目导入IntelliJ后功能我可以使用它但是当我运行编译时(例如CTRL + F9代表" Make project" - 如果我运行增量编译或完全重新编译它并不重要)不会显示任何编译时错误(例如无法解析的符号或其他语法错误)。代码编辑器中的Scala荧光笔将显示正确的错误消息!在命令行上运行sbt
/ activator
中的编译将发现错误,而IntelliJ只是说"编译成功完成"。
有趣的是,这似乎只发生在Play项目的子项目中,使用标准文件夹布局的库项目(即src/main/scala
中的源等)工作正常 - 即我得到了正确的IntelliJ的编译器反馈。根据IntelliJ"项目结构"正确设置源和资源路径。对话框,即Play子项目使用app
作为源文件夹。
我有另一个基于Play 2.2.x的项目,该项目使用单个Build.scala
文件而不是单个build.sbt
文件并且工作正常 - 我还没有真正想出如何&# 34;端口" Build.scala
文件转到播放2.3,因为他们已经改变了很多内容,而且文档说build.sbt
是(尽可能)最佳做法。
我还没有开始重新安装Scala / Play插件。我可以尝试使用IntelliJ 14的EAP来查看是否有任何改变。我已经尝试过"导入SBT项目"将项目导入IntelliJ的方法以及Play Framework的idea
命令和gen-idea
插件的sbt-idea
命令(应该与Play的大致相似,因为它我正在使用这个插件的一些版本/分支)。通过"更改"增量编译设置中的设置 - > IDE设置 - > Scala来自" IntelliJ IDEA" to" sbt incremental compiler"也不会改变任何事情。
那里的任何人都看过这个问题或者我可以尝试的任何想法?这让我很伤心:)。
TL; DR
如果我在Scala源文件中出现错误,IntelliJ启动的编译过程将不会报告,但是控制台上的sbt
会正确报告它。 IntelliJ突出显示器(在代码编辑器中)也将其标记为带有正确错误消息的错误(例如"无法解析符号xyz")。这仅适用于Play模块,而不适用于"标准"图书馆项目。我认为编译器根本没有编译Play模块中的源文件,原因我不明白。
答案 0 :(得分:2)
所以这很好的混乱后发现这是IntelliJ的Play2支持插件版本0.41的一个问题,因为将Scala和Play 2插件降级到0.38.441修复了我的问题。您可以在http://plugins.jetbrains.com/update/index?pr=idea&updateId=16633和http://plugins.jetbrains.com/update/index?pr=idea&updateId=16634找到这些版本。
这个问题似乎就是这个问题:http://youtrack.jetbrains.com/issue/SCL-7423 - 没有正式证实这确实导致了这个问题,但它似乎非常相关且相当重要。
我认为它与build.sbt
文件有关的原因是,在重构build.sbt
到Build.scala
时,我安装了更新Scala / Play插件的IntelliJ 14 EAP,因为插件文件夹在IntelliJ 13和14 EAP之间共享,它只是覆盖了它们。当我因为14 EAP没有解决问题而切换回IntelliJ 13时,我只降级/重新激活了Scala插件的0.41版本,而Play插件仍然停用 - 在版本0.41中再次激活它使问题重新出现。
多么美好的旅程。