Groovy 1.6 RC1でgrapeを試す

#Groovy1.6RC1出てます。
#→Groovy 1.6 Release Candidate is available - DZone


beta2ではダメだった@Grabアノテーションも動いたよ。ついでにファイアウォール内で動かすには,startGroovy.batの頭の方にこんなの仕込んでプロキシを有効にする(環境変数:JAVA_OPTSが重要なので,別に startGroovy.bat でなきゃダメってことはない)。

set JAVA_OPTS=-DproxySet=yes -DproxyHost=proxy.example.com -DproxyPort=8080

$HOME/.groovy/grapesを観察してると分かるけど,Ivy使ってんのね(一瞬,ivy.xmlができる)。


こんなテストコードで試してみたけど,アノテーションで指定するわけなんで,あちこちに@Grabが点在してても平気っぽい。

--- GrapeTest.groovy ---
import com.jidesoft.swing.JideSplitButton

@Grab(group = 'com.jidesoft', module='jide-oss', version='[2.2.1,2.3.0)')
public class GrapeTest {
  static String testMethod() {
    JideSplitButton.class.name
  }
  public static void main(String[] args) {
    println(testMethod())
    println(new GrapeTestSub().testMethod())
  }
}

--- GrapeTestSub.groovy ---
import org.junit.*

@Grab(group = 'junit', module='junit', version='*')
public class GrapeTestSub {
  String testMethod() {
    Assert.class.name
  }
  public static void main(String[] args) {
    println(testMethod())
  }
}


必要とするライブラリをアノテーションで指定するってのは,意欲的で面白いんだけど,いくつか気になる点もちらほら。

@Grabとimportの両方書くのが,一瞬ムダっぽく見える
pom.xmlやivy.xmlの代わりにソースに明記するからねぇ。これはスタートアップクラスとか,そうゆうのに集約するってお作法で解決できるかな。


ライブラリのバージョンチェックするタイミングがよーわからん
どうも起動する都度やってるっぽい。おかげで遅い。
これもそのうち,起動オプションとかついて解決するんだと思う。つか,そうなってくれないと使う気が起きない。


JetGroovyが対応してない
IntelliJガンガレ。:-)


いろいろ問題はあるけれど,ライブラリとってきたり,クラスパスに設定したりとか,そんなややこしいことを超越して,単に

> groovy ほにゃらら.groovy

とするだけで全てが解決するのは,なかなか感慨深いものがありますよ。

プラグイン作って覚えたことを淡々と記録するよ(Balloon編)

イヤ,プラグインは作ってないけどね。:-P
Maven ProjectsやChangesツールウィンドウにバルーンが出ていたので,もしやと思いOpenAPIを調べてみたよ。そしたら,いかにもなAPIが見つかった。

  • com.intellij.openapi.ui.popup.Balloon
  • com.intellij.openapi.ui.popup.BalloonBuilder

同パッケージにある JBPopupFactoryのメソッドを調べてみたら,こんなのも見つけた。

createBalloonBuilder

public abstract BalloonBuilder createBalloonBuilder(@NotNull
javax.swing.JComponent content)
createBalloonBuilder
public abstract BalloonBuilder createHtmlTextBalloonBuilder(@NotNull
java.lang.String htmlContent,
@Nullable
javax.swing.Icon icon,
java.awt.Color fillColor,
@Nullable
javax.swing.event.HyperlinkListener listener)

続きを読む