LoginSignup
3
3

More than 5 years have passed since last update.

SpockのSNAPSHOTが動かなくなった場合の対処

Last updated at Posted at 2015-03-05

GroovyのテストフレームワークSpockの最新版(開発版)は1.0-groovy-2.3-SNAPSHOTでしたが、先週末(2015/2/28-3/2)にSNAPSHOTが更新され、Gradle 2.2.1(で、gradleApi()をdependencyに入れている場合)ではtestタスクが失敗するようになりました。
gradleApi()は、プラグインを書くために使用しています。

こんな書き方の場合です。

dependencies {
   compile gradleApi()
   compile localGroovy()
   :
   testCompile 'org.spockframework:spock-core:1.0-groovy-2.3-SNAPSHOT'
 }

1.0-groovy-2.3-SNAPSHOTがgroovy-all:2.3.10に依存するようになり、バージョンの競合が発生しているようです。

org.spockframework.util.InternalSpockError: Failed to instantiate spec 'XxxSpec'
:
Caused by: java.lang.ExceptionInInitializerError
:
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.3.6 and you are trying to load version 2.3.10

最初は

compile localGroovy()

と書いているのが原因かと思い

compile 'org.codehaus.groovy:groovy-all:2.3.10'

としましたが変わらず、原因はgradleApi()のようでした。

以下のようにspockのdependencyからgroovy-allを外してやれば、これまで通りに動くようになりました。

dependencies {
   compile gradleApi()
   compile localGroovy()
   :
   testCompile ('org.spockframework:spock-core:1.0-groovy-2.3-SNAPSHOT') {
       exclude group: 'org.codehaus.groovy', module: 'groovy-all'
   }
 }

あるいはtransitive = falseでも問題なさそうです。

dependencies {
   compile gradleApi()
   compile localGroovy()
   :
   testCompile ('org.spockframework:spock-core:1.0-groovy-2.3-SNAPSHOT') {
       transitive = false
   }
 }

なお、Groovy 2.4を使っている場合は、新しく追加された1.0-groovy-2.4-SNAPSHOTが使えます。

(2015/03/05 追記)
1.0の正式版がリリースされました。
上記の1.0-groovy-2.3-SNAPSHOT1.0-groovy-2.4-SNAPSHOTは使えなくなっています。
1.0-groovy-2.3または1.0-groovy-2.4を使えば良さそうです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3