我有一些问题要使jacoco4sbt与我的Play 2.3.4项目一起工作 .
我的项目由3个子模块组成: common
, api
和 frontend
, app
根文件夹中没有代码 . 现在,当我运行Jacoco时,它找不到子模块类 .
检查 target/scala-VERSION/classes
我只找到一些路由类(实际上这是我在"root"项目中唯一的代码,但我期待的是因为我聚合了所有这些项目,所以这些类会在那里) .
如果我将类从 MODULE_NAME/target/scala-VERSION/classes
复制到 target/scala-VERSION/classes
然后运行Jacoco我得到预期的结果 .
那么让它运作的最佳方法是什么?我在jacoco4sbt中找不到任何配置来指定其他类位置 .
我的build.sbt文件
import Keys._
// Dummy value to deal with bug in sbt 0.13.5
val k = 0
name := "PlayApp"
version := "0.5.0"
// omitted resolvers part
scalaVersion := "2.10.4"
libraryDependencies ++= Seq(
"com.edulify" %% "play-hikaricp" % "1.5.0" exclude("com.jolbox", "bonecp"),
"com.novocode" % "junit-interface" % "0.11" % "test"
)
lazy val common = project.in(file("common")).enablePlugins(PlayJava)
lazy val frontend = project.in(file("frontend")).enablePlugins(PlayJava).dependsOn(common)
lazy val api = project.in(file("api")).enablePlugins(PlayJava).dependsOn(common)
lazy val main = project.in(file(".")).enablePlugins(PlayJava)
.aggregate(frontend, api).dependsOn(frontend, api)
parallelExecution in Test := false
javaOptions in Test += "-Dconfig.resource=test.conf"
jacoco.sbt
import de.johoop.jacoco4sbt._
import JacocoPlugin._
jacoco.settings
Keys.fork in jacoco.Config := true
parallelExecution in jacoco.Config := false
jacoco.outputDirectory in jacoco.Config := file("target/jacoco")
jacoco.reportFormats in jacoco.Config := Seq(XMLReport("utf-8"), HTMLReport("utf-8"))
jacoco.excludes in jacoco.Config := Seq("views*", "*Routes*", "controllers*routes*", "controllers*Reverse*", "controllers*javascript*", "controller*ref*")
javaOptions in jacoco.Config += "-Dconfig.resource=test.conf"
1 回答
使用以下内容将
jacoco.sbt
添加到 every 子项目:附:我一直在寻找方法来说服sbt将
jacoco.settings
应用于顶级根build.sbt
中的每个子项目,但无济于事 .