Groovy-Eclipse plugin のコンパイラバージョンを変更する

 
色々あって、使い慣れた Eclipse 3.7 が起動しなくなったので Eclipse 4.2 に乗り換えてみました。

今となっては、Groovy が使えないとなんともならないので、Eclipse マーケットプレースから Groovy-Eclipse plugin をインストールしました。

最新の Groovy-Eclipse plugin は Groovy 2.0 に対応

折しも6月末に Groovy 2.0 がリリースされていて興味はあったが、無意識にインストールしてみたら使えるようになってました。

不幸中の幸いというか、喜び勇んでたら…

Spock はまだ Groovy 2.0 には対応していないワナ

次のようなコンパイルエラーが発生してた…


Groovy:Unexpected problem with AST transform: The Spock compiler plugin cannot execute because Spock 0.6.0-groovy-1.8 is not compatible with Groovy 2.0.0. For more information, see http://versioninfo.spockframework.org

Groovy のコンパイラが 2.0 だが、Spock の最新リリースバージョン 0.6 は Groovy 1.8 までしか対応していない。
というわけで、コンパイルできないとのこと。

※参考
スナップショットでは、Groovy 2.0 に対応した Spock 0.7 が公開されています。
http://versioninfo.spockframework.org より)

Spock が使えないとテストが書けないので、ダウングレードする方法を探すことに。


GUI からバージョン指定を変更する

Eclipse のいつもの設定のところで、Groovy コンパイラのバージョンを指定できます。
「Switch to 1.8.6.xx ...」というボタンを押すと、再起動がかかって、バージョンが変更されます。

…はずですが、再起動してもバージョン変わらず。

ということで、トラブルシューティング開始。

ファイル編集でバージョン指定を変更する

さっきのボタンの下に「See here」とあるので、見てみる。
http://docs.codehaus.org/display/GROOVY/Compiler+Switching+within+Groovy-Eclipse

「Switching from outside of Eclipse」という節にあるとおりやってみる。

eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info ファイルの以下の場所を編集します。

[sourcecode language="css"]
org.codehaus.groovy,1.7.10.xx-20120630-2000-e42-RELEASE,plugins/org.codehaus.groovy_1.7.10.xx-20120630-2000-e42-RELEASE/,4,false
org.codehaus.groovy,1.8.6.xx-20120630-2000-e42-RELEASE,plugins/org.codehaus.groovy_1.8.6.xx-20120630-2000-e42-RELEASE/,4,false
org.codehaus.groovy,2.0.0.xx-20120630-2000-e42-RELEASE,plugins/org.codehaus.groovy_2.0.0.xx-20120630-2000-e42-RELEASE/,4,false
[/sourcecode]

ここには、有効となる Groovy のバージョンが列挙されている模様。
ということで、org.codehaus.groovy,2.0.0 … という行を1行分削除して、無効にします。

ここまでやって再起動すると、Groovy 2.0 がコンパイラバージョンから除外されて、Groovy 1.8 が繰り上がりでコンパイラバージョンになりました。

自動的に Spock 0.6 のコンパイルエラーも解消されました。

おまけ

ブログに書いてソリューションログを残してくために、編集した bundles.info ファイルを元に戻して、一度 Grooovy 2.0 が有効になるようにしました。
その後、「Switch to 1.8.6.xx …」ボタンを押したら見事に Groovy 1.8 をコンパイラとするように設定が変更できました。

…なんだったんだ!?