leftovers...

about grails groovy

Grails Maven Publisher プラグインで、Grails プラグインをローカルインストールするよん

GrailsプラグインMavenで管理。簡単にローカルのみでね。
何故?

  • 公式プラグイン公開するほどでもない。=>( チキンなので公開できない )
  • 今回のプロジェクト専用プラグインだし。
  • 共有できるプライベートなチーム用プラグインリポジトリを作るのもな・・・。 #メンバの所在地的には、グローバルに無いとだめだし、となるとサーバ準備、VPNとかもろもろ準備しないと・・・。
  • インラインプラグインで扱うのもよいけど・・・。hudsonのビルドでプラグイン自動解決がね。
  • そもそもインラインプラグインで、おかしな挙動が => バグかなw

まあ、他にも、いろいろありまして。この決断。

資料。
http://www.slideshare.net/tyama/jggug-2010-330-grails-13
※過去の自分のスライド。 => 23p
http://grails.org/doc/latest/guide/3.%20Configuration.html#3.7.7%20Plugin%20JAR%20Dependencies
http://d.hatena.ne.jp/mottsnite/20100311/1268261367


では、やってみる。
対象のGrailsプラグインプロジェクトにmaven-publisherプラグインをインストール

% grails install-plugin maven-publisher

プラグインディスクリプタファイル(XxxGrailsPlugin.groovy)に、group設定
※いまだドキュメントには・・・。

class ResourcesGrailsPlugin {
    def group = 'jp.xmldo.grails'
    def version = "0.3.3-SNAPSHOT"
//..略..
}

GrailsプラグインをローカルMavenリポジトリにインストール

% grails maven-install 

そして、実際にプラグインを使用したいプロジェクトへ依存関係を追記
上記の例だと、'jp.xmldo.grails:resources:0.3.3-SNAPSHOT' となる。

grails.project.dependency.resolution = {
    inherits("global") {
    }
    log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    repositories {
        grailsPlugins()
        grailsHome()
        grailsCentral()
        mavenLocal()   //←これ重要
        mavenCentral()
    }
    dependencies {
    }
    plugins {
        //こんな感じで書く。
        runtime 'jp.xmldo.grails:resources:0.3.3-SNAPSHOT'
    }
}

まとめ。

  • 超簡単にできる。

たったの数ステップ。(1)プラグイン入れる (2)groupを追記(※別に無くても良い) (3)コマンド一発。

  • プラグインを使用する際は、そのプロジェクトに依存定義を書いておけば、install-pluginコマンドも必要ない。 Automatic Transitive Plugin Resolution (他動的なプラグイン自動解決?)
  • いろいろスッキリ!