如何让Intellij Idea调试Play 2.1应用程序的源代码文件,而不仅仅是项目定义

时间:2013-02-16 22:12:02

标签: scala intellij-idea playframework-2.1

当我创建一个新的Play 2.1项目时,Intellij Idea坚持只调试项目配置文件。也就是说,./project / Build.scala中的行,没有其他文件。

如何告诉Idea在./app/中调试内容?

我已经生成了像这样的Idea项目文件:[project-name] $ idea with-sources=yes(在Play的控制台中)。

(我不记得以前在Play 2.0或更早版本的2.1版本中发生过这种情况)

2 个答案:

答案 0 :(得分:3)

这个问题有两个原因:一个是“有趣的”,一个是愚蠢的。

有趣的原因:

播放2.1和SBT似乎是分叉测试(因此在一个单独的过程中运行它们)。因此,我的单元测试代码中的断点从未被击中。

“修复”此方法的一种方法是添加此配置设置:

Keys.fork in Test := false

愚蠢的原因:

我还没有在新项目中编译任何“真正的”源代码文件。因此,Idea从未在这些行上激活断点。但是当我启动Play的SBT控制台时,编译了项目配置 Build.scala文件,因此Idea直接在Build.scala中激活了断点。 - 所以真的没有问题:我只需要在Play控制台中点击run然后断点就会生效(在Play编译了我的源代码之后)。

答案 1 :(得分:0)

我正在运行Intellij,在端口9999上进行远程调试 1.~apatzer>玩调试 2.然后在Intellij中启动我的远程配置 3. [playproject] $ run ==>成功击中断点和调试。

由于分叉,我无法在任何测试中遇到断点。例如: [playproject] $ test-only com.mydomain.pkg.MyTest ==>失败的过程不同。断点没有在IDE中命中。

这是有效的:

import sbt._
import Keys._
import play.Project._

object MyBuild extends Build {
...
lazy val main = play.Project(appName, appVersion, appDependencies).settings(
  Keys.fork in testOnly := false,
  libraryDependencies ++= deps,
  ...