当我创建一个新的Play 2.1项目时,Intellij Idea坚持只调试项目配置文件。也就是说,./project / Build.scala中的行,没有其他文件。
如何告诉Idea在./app/中调试内容?
我已经生成了像这样的Idea项目文件:[project-name] $ idea with-sources=yes
(在Play的控制台中)。
(我不记得以前在Play 2.0或更早版本的2.1版本中发生过这种情况)
答案 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,
...