2013年3月21日木曜日

jacoco4sbtのバージョン2.0.0はPlay 2.1では動かない?

背景

Play 2.1でテストコードを書きながら、コードカバレッジを把握したいなーと思って調べていたところ、
jacoco4sbtなるものを発見しまして。

https://bitbucket.org/jmhofer/jacoco4sbt

問題

で最新が2.0.0ということで色々設定をした後、playコマンドでsbt起動後に
jacoco:cover
 としてみると下記のエラーが。
java.lang.IncompatibleClassChangeError: class org.jacoco.core.internal.flow.ClassProbesVisitor has interface org.objectweb.asm.ClassVisitor as super class

で、どうも同じ症状が出ている人は世の中にいるらしく。
https://bitbucket.org/jmhofer/jacoco4sbt/issue/18/the-conflict-about-asm-library-in-play

 上のリンクの方の推測によると、
Playで使っているASMのバージョンと、Jacocoで使っているASMのバージョンが違うんじゃない?
とのこと。

回避策

jacoco4sbtの1.2.4を使えばいいよ!とのことでした。

pkugin.sbtはこんな感じ。
//Jacoco
libraryDependencies ++= Seq(
  "org.jacoco" % "org.jacoco.core" % "0.5.9.201207300726" artifacts(Artifact("org.jacoco.core", "jar", "jar")),
  "org.jacoco" % "org.jacoco.report" % "0.5.9.201207300726" artifacts(Artifact("org.jacoco.report", "jar", "jar")))

addSbtPlugin("de.johoop" % "jacoco4sbt" % "1.2.4")


その他

ASMって初めて知ったのですが、Javaのbytecodeを操作したり分析したりするフレームワークだそうな。
http://asm.ow2.org/

0 件のコメント:

コメントを投稿