<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Grails on ゲンゾウ用ポストイット</title><link>https://genzouw.com/entry/category/grails/</link><description>Recent content in Grails on ゲンゾウ用ポストイット</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sun, 14 Mar 2021 08:15:15 +0900</lastBuildDate><atom:link href="https://genzouw.com/entry/category/grails/index.xml" rel="self" type="application/rss+xml"/><item><title>CloudBees上でGrailsにてDBにアクセス</title><link>https://genzouw.com/entry/2012/08/02/002258/161/</link><pubDate>Thu, 02 Aug 2012 00:22:58 +0900</pubDate><guid>https://genzouw.com/entry/2012/08/02/002258/161/</guid><description>&lt;p&gt;&lt;a href="http://www.google.com/search?q=CloudBees&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt;CloudBees&lt;/a&gt; にGrailsアプリをアップできたので、DBにアクセスしてみた。&lt;/p&gt;&#10;&lt;h2&gt;設定&lt;/h2&gt;&#10;&lt;p&gt;以下にアクセスして、Databaseの新規追加を行う。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://grandcentral.cloudbees.com/"&gt;https://grandcentral.cloudbees.com/&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;CloudBees上での各種設定方法は、僕自身も四苦八苦しているうちに登録方法をみにつけたので省略する。&#10;デフォルトではMySQLデータベースとして登録される。&lt;/p&gt;&#10;&lt;h2&gt;Grailsアプリ上の設定&lt;/h2&gt;&#10;&lt;p&gt;以下のサイトの &lt;strong&gt;Configuring CloudBees DataSources&lt;/strong&gt; の内容を利用した。 CloudBees RUN@cloud Documentation &lt;/p&gt;&#10;&lt;p&gt;そのままコピペした。コピペした上で、以下の３文字列を置換した。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;BEES_DB&lt;/li&gt;&#10;&lt;li&gt;BEES_DB_USER&lt;/li&gt;&#10;&lt;li&gt;BEES_DB_PASS&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;設定後は以下のコマンドを実行し、warファイルをデプロイする。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-bash"&gt;# ${app_name}は適切に書き換えること&#10;$ grails prod war&#10;$ grails bees-app-deploy ${app_name}&lt;/code&gt;&lt;/pre&gt;&#10;&lt;h2&gt;結果を確認してみる&lt;/h2&gt;&#10;&lt;p&gt;ざんねんながら自分のアプリケーションにアクセスしてみても &lt;strong&gt;404エラー&lt;/strong&gt; となっている。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-bash"&gt;`http://${app_name}.${account_name}.cloudbees.net/`&#10;&lt;p&gt;exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class &amp;lsquo;com.cloudbees.jdbc.Driver&amp;rsquo; for connect URL &amp;lsquo;[[jdbc:cloudbees://${app_name_db}]]&amp;rsquo;&#10;at org&amp;hellip;.&#10;&amp;hellip;&#10;&amp;hellip;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;com.cloudbees.jdbc.Driver&lt;/code&gt;を生成できませんでした、と。&lt;/p&gt;&#10;&lt;h2&gt;解決方法&lt;/h2&gt;&#10;&lt;p&gt;２つある。&lt;/p&gt;&#10;&lt;h2&gt;解決方法その１&lt;/h2&gt;&#10;&lt;p&gt;CloudBeesの提供していると思われるJDBC機能を利用しない方法。DataSource.groovyを書き換える。&lt;/p&gt;&#10;&lt;h4&gt;DataSource.groovy&lt;/h4&gt;&#10;&lt;pre&gt;&lt;code class="language-groovy"&gt;dataSource {&#10; pooled = true&#10; // driverClassName = &amp;quot;com.cloudbees.jdbc.Driver&amp;quot;&#10; driverClassName = &amp;quot;com.mysql.jdbc.Driver&amp;quot;&#10;}&#10;environments {&#10; // ...&#10; production {&#10; dataSource {&#10; dbCreate = &amp;quot;update&amp;quot;&#10; // url = &amp;quot;[[jdbc:cloudbees://${app_name_db}]]&amp;quot;&#10; url = &amp;quot;jdbc:mysql://ec2-75-xxx-xxx-xxx.compute-1.amazonaws.com/${app_name_db}&amp;quot; // 適宜書き換える必要がある箇所&#10; // mysqlサーバー名も僕の環境のものを一部掲載しておく。&#10; username = &amp;quot;${db_user}&amp;quot; // 適宜書き換える必要がある箇所&#10; password = &amp;quot;${db_password}&amp;quot; // 適宜書き換える必要がある箇所&#10; }&#10; }&#10;}&lt;/code&gt;&lt;/pre&gt;&#10;&lt;h3&gt;解決方法その２&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;url属性情報&lt;/strong&gt; を一部直さないといけないぽい。&lt;/p&gt;</description></item><item><title>CloudBeesにGrailsアプリをデプロイしてみる</title><link>https://genzouw.com/entry/2012/07/30/001114/163/</link><pubDate>Mon, 30 Jul 2012 00:11:14 +0900</pubDate><guid>https://genzouw.com/entry/2012/07/30/001114/163/</guid><description>&lt;p&gt;GrailsでWebアプリを作る際には &lt;strong&gt;CloudBees&lt;/strong&gt; が良さそうだなと思い、無料版でアプリ検証してみました。&#10;アプリケーションの構築などはいろんな方が紹介しているので、今回はデプロイのみ行ってみます。&#10;次回はデータベースの利用を取り上げてみるつもりです。&lt;/p&gt;&#10;&lt;h2 id="マシン環境"&gt;マシン環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -vs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Linux &lt;span class="c1"&gt;#41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ java -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;java version &lt;span class="s2"&gt;&amp;#34;1.7.0_03&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK Runtime Environment &lt;span class="o"&gt;(&lt;/span&gt;IcedTea7 2.1.1pre&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;7~u3-2.1.1~pre1-1ubuntu3&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK 64-Bit Server VM &lt;span class="o"&gt;(&lt;/span&gt;build 22.0-b10, mixed mode&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Grails version: 2.1.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="アプリケーションの作成デプロイ"&gt;アプリケーションの作成、デプロイ&lt;/h2&gt;&#10;&lt;p&gt;正式なデプロイ方法があるが、 以下のGrailsプラグインを使うのが最も簡単なようです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Grails Plugin: CloudBees&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;手順をピックアップする以下のようになります。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;プラグインをインストール&lt;/li&gt;&#10;&lt;li&gt;プロパティを４つ設定&lt;/li&gt;&#10;&lt;li&gt;ビルド→デプロイを実行 &lt;em&gt;もちろん事前にアカウントを取得しておく必要がある。&lt;/em&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;strong&gt;また、開発中のGrailsプロジェクトと同名でCloudBees上にアプリケーションを新規登録しておく必要もあります。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Bash上でGrailsコマンドのオプションを保管</title><link>https://genzouw.com/entry/2012/07/28/160928/164/</link><pubDate>Sat, 28 Jul 2012 16:09:28 +0900</pubDate><guid>https://genzouw.com/entry/2012/07/28/160928/164/</guid><description>&lt;p&gt;&lt;a href="http://d.hatena.ne.jp/uehaj/20090606/1244259752"&gt;Bash completion for Grails 1.1 - uehaj&amp;rsquo;s blog&lt;/a&gt; を見てからずっと設定を試してみたいと思っていたが &lt;a href="http://www.google.com/search?q=Grails&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt;google:Grails&lt;/a&gt; を触る機会がなかったもので試せていなかったが、Webの案件が入りそうなのでGrailsの最習得を目指して環境周りを整備しだした。&lt;/p&gt;&#10;&lt;h2 id="マシン環境"&gt;マシン環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -vs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Linux &lt;span class="c1"&gt;#41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ java -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;java version &lt;span class="s2"&gt;&amp;#34;1.7.0_03&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK Runtime Environment &lt;span class="o"&gt;(&lt;/span&gt;IcedTea7 2.1.1pre&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;7~u3-2.1.1~pre1-1ubuntu3&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenJDK 64-Bit Server VM &lt;span class="o"&gt;(&lt;/span&gt;build 22.0-b10, mixed mode&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails -version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Grails version: 2.1.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="スクリプトダウンロード"&gt;スクリプトダウンロード&lt;/h2&gt;&#10;&lt;p&gt;Bash Completionの仕組みは勉強不足だが、Grailsコマンドにこの機能を組み込むためにはスクリプトが必要という事でダウンロード。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://www.google.com/search?q=github&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt;google:github&lt;/a&gt; に上がっていた。（ &lt;a href="https://github.com/podollb/grails-autocomplete"&gt;https://github.com/podollb/grails-autocomplete&lt;/a&gt; ）&lt;/p&gt;</description></item><item><title>Grails-1.2.2になってて浦島太郎</title><link>https://genzouw.com/entry/2010/04/19/232443/244/</link><pubDate>Mon, 19 Apr 2010 23:24:43 +0900</pubDate><guid>https://genzouw.com/entry/2010/04/19/232443/244/</guid><description>&lt;p&gt;仕事が落ち着いているといろんなことが試せて楽しい。&lt;br&gt;&#10;ご飯を食べて風呂にはいってもまだこんな時間帯というのが幸せ。&lt;/p&gt;&#10;&lt;p&gt;ひさびさに&lt;a href="http://d.hatena.ne.jp/keyword/Grails" class="keyword"&gt;Grails&lt;/a&gt;で遊んで見ようと思ったので、まずは最新の&lt;a href="http://d.hatena.ne.jp/keyword/Grails" class="keyword"&gt;Grails&lt;/a&gt;をダウンロードする。いつのまにか1.2.2にまでなっていた。&lt;/p&gt;&#10;&lt;p&gt;以下のようなスクリプトを実行して、/usr/shareフォルダにインストール。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1.2.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -d /tmp &lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir /tmp&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://dist.codehaus.org/grails/grails-&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;unzip grails-&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mv grails-&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;/ /opt/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /opt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo unlink grails&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chown root.root -R /opt/grails-&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ln -s grails-&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; grails&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod &lt;span class="m"&gt;755&lt;/span&gt; /opt/grails-&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;/bin/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;パスも通しておく。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;GRAILS_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/share/grails&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:&lt;span class="nv"&gt;$GRAILS_HOME&lt;/span&gt;/bin&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;a href="http://d.hatena.ne.jp/keyword/Grails" class="keyword"&gt;Grails&lt;/a&gt;インストール完了。&lt;br&gt;&#10;&lt;a href="http://d.hatena.ne.jp/keyword/grails" class="keyword"&gt;grails&lt;/a&gt; helpを実行してみたが、なんかコマンド実行結果が怪しい。$&lt;a href="http://d.hatena.ne.jp/keyword/GRAILS" class="keyword"&gt;GRAILS&lt;/a&gt;_HOME/bin/startGrailsスクリプトの一部が何だか怪しい。&lt;br&gt;&#10;231行目を以下のように変更してみたら解決。（いずれ治るのかな？）&lt;/p&gt;</description></item><item><title>Grails1.2のテスト実行用サーバーがTomcat</title><link>https://genzouw.com/entry/2010/02/01/135929/253/</link><pubDate>Mon, 01 Feb 2010 13:59:29 +0900</pubDate><guid>https://genzouw.com/entry/2010/02/01/135929/253/</guid><description>&lt;p&gt;&lt;a href="http://www.matsuaz.com/matsumotojs/2010/01/20/1263920819063.html"&gt;Matsumoto.JS - Grails: サーバ環境（Tomcatプラグイン）&lt;/a&gt;より。&lt;br&gt;&#10;jettyから&lt;a href="http://d.hatena.ne.jp/keyword/Tomcat" class="keyword"&gt;Tomcat&lt;/a&gt;に変わったんですね。起動が重くなっていないかだけ心配。&lt;/p&gt;</description></item><item><title>Grails App Engine Plugin + Gorm JPA Pluginでリレーションを定義してみる</title><link>https://genzouw.com/entry/2009/07/23/230600/307/</link><pubDate>Thu, 23 Jul 2009 23:06:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/23/230600/307/</guid><description>&lt;p&gt;&lt;strong&gt;Grails App Engine Plugin + Gorm JPA Plugin&lt;/strong&gt; で、ひとまずリレーションのないドメインクラスを用意した場合の動作は確認できました。&#10;次はリレーションを追加してみることにしました。が、うまくいかない。&#10;とりあえず試してみたことを列挙してみる。&lt;/p&gt;&#10;&lt;h2 id="環境"&gt;環境&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;grails-1.1.1&lt;/li&gt;&#10;&lt;li&gt;groovy-1.6.3&lt;/li&gt;&#10;&lt;li&gt;java-1.6.0.14&lt;/li&gt;&#10;&lt;li&gt;app-engine-plugin-0.8.3&lt;/li&gt;&#10;&lt;li&gt;gorm-jpa-0.3&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="まずは単純に動くところまで"&gt;まずは単純に動くところまで&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://genzouw.com/entry/2009/07/15/231700"&gt;Grails AppEngine PluginでJPAを使用する（成功） | ゲンゾウ用ポストイット&lt;/a&gt; にて、リレーションのないドメインが動くところまで。&lt;/p&gt;&#10;&lt;h2 id="リレーションを追加"&gt;リレーションを追加&lt;/h2&gt;&#10;&lt;p&gt;ここからがおかしいのだろうと思う。まずは以下の２つのドメインを作成した。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;com.sample.Book&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;com.sample.Category&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;コードは以下のとおり。&lt;/p&gt;&#10;&lt;h3 id="bookgroovy"&gt;Book.groovy&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sample&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javax.persistence.*&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Entity&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Book&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="n"&gt;Serializable&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@Id&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@GeneratedValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strategy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GenerationType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;IDENTITY&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;isbn&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@ManyToOne&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Category&lt;/span&gt; &lt;span class="n"&gt;category&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nl"&gt;visible:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h3 id="categorygroovy"&gt;Category.groovy&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sample&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javax.persistence.*&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Entity&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Category&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="n"&gt;Serializable&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@Id&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@GeneratedValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strategy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GenerationType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;IDENTITY&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@OneToMany&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;List&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;book&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;books&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nl"&gt;visible:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;あとはcontroller、viewを作成して実行。&lt;/p&gt;</description></item><item><title>Grails In GAEのローカル動作がおかしくなったら</title><link>https://genzouw.com/entry/2009/07/22/075000/308/</link><pubDate>Wed, 22 Jul 2009 07:50:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/22/075000/308/</guid><description>&lt;p&gt;&lt;strong&gt;grails&lt;/strong&gt;に&lt;strong&gt;grails app engine plugin&lt;/strong&gt;を入れていろいろ試しているのだが、前日に動作していたアプリをドメインクラス１つ追加したぐらいの変更で動作しなくなってしまった。&lt;/p&gt;&#10;&lt;p&gt;一度プロジェクトを削除して、再度&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;strong&gt;grails create-app&lt;/strong&gt;&lt;/span&gt;を実行するも、事態は改善に向かわず。&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;strong&gt;grails app-engine&lt;/strong&gt;&lt;/span&gt;コマンド実行時に以下のようなエラーが出ていた。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;&#10;Caused by: : The following error occurred while executing this line:&#10;/usr/share/appengine-java-sdk-1.2.2/config/user/ant-macros.xml:94: Java returned: 1&#10; at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:541)&#10; at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:394)&#10; at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)&#10; at org.apache.tools.ant.Task.perform(Task.java:348)&#10; at _Events$_run_closure1.doCall(_Events.groovy:54)&#10; at _GrailsEvents_groovy$_run_closure5.doCall(_GrailsEvents_groovy:59)&#10; at _GrailsEvents_groovy$_run_closure5.call(_GrailsEvents_groovy)&#10; at _GrailsWar_groovy$_run_closure4.doCall(_GrailsWar_groovy:240)&#10; at AppEngine$_run_closure2.doCall(AppEngine:26)&#10; at gant.Gant$_dispatch_closure4.doCall(Gant.groovy:324)&#10; ... 10 more&#10;Caused by: /usr/share/appengine-java-sdk-1.2.2/config/user/ant-macros.xml:94: Java returned: 1&#10; at org.apache.tools.ant.taskdefs.Java.execute(Java.java:107)&#10; at com.google.appengine.tools.enhancer.EnhancerTask.execute(EnhancerTask.java:99)&#10; at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)&#10; at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)&#10; at org.apache.tools.ant.Task.perform(Task.java:348)&#10; at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)&#10; at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)&#10; at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)&#10; at org.apache.tools.ant.Task.perform(Task.java:348)&#10; at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:391)&#10; ... 18 more&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;strong&gt;grails clean;grails app-engine&lt;/strong&gt;&lt;/span&gt;とコマンド実行して、一度クリーンしてもダメ。&lt;/p&gt;</description></item><item><title>Grails in GAEの課題</title><link>https://genzouw.com/entry/2009/07/16/225300/309/</link><pubDate>Thu, 16 Jul 2009 22:53:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/16/225300/309/</guid><description>&lt;p&gt;ようやく&lt;strong&gt;Google App Engine&lt;/strong&gt;で&lt;strong&gt;Grails + GORM&lt;/strong&gt;が動いた。&lt;/p&gt;&#10;&lt;p&gt;けれどもいくつか気になる点が。&lt;/p&gt;&#10;&lt;h4&gt;前提&lt;/h4&gt;&#10;&lt;p&gt;あくまで以下のプラグインを使った僕の環境での課題です。&lt;/p&gt;&#10;&lt;ul&gt;&#10; &lt;li&gt;grails appengine plugin&lt;/li&gt;&#10; &lt;li&gt;grails gorm-jpa plugi&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;アプリのURLはこちら。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://genzouw.appspot.com/book/list"&gt;Book List&lt;/a&gt;&lt;/p&gt;&#10;&lt;h4&gt;Grailsでのメッセージ表示&lt;/h4&gt;&#10;&lt;p&gt;&lt;strong&gt;Grails&lt;/strong&gt;で生成される&lt;strong&gt;Controller&lt;/strong&gt;クラスを見てみると、以下の処理終了後にメッセージを出力するようになっている。&lt;/p&gt;&#10;&lt;ul&gt;&#10; &lt;li&gt;登録（save）&lt;/li&gt;&#10; &lt;li&gt;更新(update）&lt;/li&gt;&#10; &lt;li&gt;削除（delete）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Grailsにはいくつかのスコープが存在していて一般的なリクエスト、セッションの他に&lt;strong&gt;フラッシュ&lt;/strong&gt;なんてのもある。&lt;/p&gt;&#10;&lt;p&gt;Japanese Controllers - Grails - Codehaus&lt;/p&gt;&#10;&lt;p&gt;上記の更新処理実行後は、&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;flash.message = &amp;quot;~なんかメッセージ~&amp;quot;&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;と言う風に表示したいメッセージをセットしている。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;View&lt;/strong&gt;ではこの&lt;strong&gt;flash.message&lt;/strong&gt;が空でない場合のみ表示するようになっている。&lt;/p&gt;&#10;&lt;h4&gt;GAE上だとメッセージがずっと残ってしまう（Grails AppEngine Pluginの問題？）&lt;/h4&gt;&#10;&lt;p&gt;通常は画面表示後に&lt;strong&gt;flash&lt;/strong&gt;スコープの内容がクリアされる。&lt;/p&gt;&#10;&lt;p&gt;GrailsプロジェクトにGrails AppEngine Plugin、Gorm-JPA Pluginを入れてもこれは同様。&lt;/p&gt;&#10;&lt;p&gt;ただし、&lt;strong&gt;GAE上にアップするとなぜかflashスコープの値がクリアされなくなってしまう。&lt;/strong&gt;更新後に表示されたメッセージが、たとえば一覧画面を飛び回っている間も表示され続けたりする。挙句の果て、次の更新、削除を行ってもメッセージが切り替わらない。&lt;/p&gt;&#10;&lt;h4&gt;[HOME]のリンクおかしい&lt;/h4&gt;&#10;&lt;p&gt;&amp;nbsp;こちらはローカルでも出るので、&lt;strong&gt;Grails AppEngine Plugin&lt;/strong&gt;が原因の可能性が大きい。&lt;/p&gt;&#10;&lt;p&gt;画面の左上の[HOME]のリンクを押しても、現在表示中のページがリロードされるだけ。サイトのトップへ移動してくれなくなってしまった。&lt;/p&gt;&#10;&lt;p&gt;暇があったら原因を調べてみたい。&lt;/p&gt;</description></item><item><title>Grails AppEngine PluginでJPAを使用する（成功）</title><link>https://genzouw.com/entry/2009/07/15/231700/310/</link><pubDate>Wed, 15 Jul 2009 23:17:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/15/231700/310/</guid><description>&lt;p&gt;&lt;strong&gt;Grails&lt;/strong&gt; + Grails AppEngine Plugin + JPA でようやく簡単なアプリが動作確認できたので整理。&lt;/p&gt;&#10;&lt;h2 id="動作確認時の環境"&gt;動作確認時の環境&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Groovy 1.6.3&lt;/li&gt;&#10;&lt;li&gt;Grails 1.1.1&lt;/li&gt;&#10;&lt;li&gt;Google App Engine sdk for java 1.2.1&lt;/li&gt;&#10;&lt;li&gt;Grails Appengine Plugin 0.8.3&lt;/li&gt;&#10;&lt;li&gt;Grails gorm-jpa plugin 0.3&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="資料"&gt;資料&lt;/h2&gt;&#10;&lt;p&gt;何度もブログで掲載している以下の資料を再度整理しました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://docs.google.com/present/edit?hl=ja&amp;amp;id=dgkcctp6_2123s6h5tc7"&gt;Google App Engine で Grails! - &amp;ldquo;Google Docs&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="お願い"&gt;お願い&lt;/h2&gt;&#10;&lt;p&gt;誤りなどありましたらお知らせください。できるだけ早く直します。資料みれないんじゃーとかも教えてください。&lt;/p&gt;&#10;&lt;p&gt;ちなみに動いたやつはこれ。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://genzouw.appspot.com/book/list"&gt;Book List&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;非常にシンプル。&lt;/p&gt;</description></item><item><title>google app engine sdk 1.2.2リリース</title><link>https://genzouw.com/entry/2009/07/15/220300/311/</link><pubDate>Wed, 15 Jul 2009 22:03:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/15/220300/311/</guid><description>&lt;p&gt;今日、何気なく&lt;strong&gt;Google App Engine&lt;/strong&gt; &lt;strong&gt;SDK&lt;/strong&gt;のサイトを除いたら、バージョンが1.2.1から1.2.2になっていた。&lt;/p&gt;&#10;&lt;p&gt;リリースは&lt;strong&gt;2009/07/13&lt;/strong&gt;となっていたので、二日前にリリースされたんですね。&lt;/p&gt;&#10;&lt;p&gt;最近Google App Engineにリトライ中なのであまりバージョンの異なるものに入れ替えはよくないかなーと思いつつ、やはり使うなら最新版だろ！ということで早速入れ替え。&lt;/p&gt;</description></item><item><title>Grails AppEngine PluginでJPAを使用する（失敗）</title><link>https://genzouw.com/entry/2009/07/14/070400/312/</link><pubDate>Tue, 14 Jul 2009 07:04:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/14/070400/312/</guid><description>&lt;h2 id="grails-appengine-pluginでjpaを使用するには"&gt;Grails AppEngine pluginでJPAを使用するには&lt;/h2&gt;&#10;&lt;p&gt;前日、以下のページにてJPAを使用する場合には追加でプラグイン入れないといけないという記述を見つけたので、再度 &lt;strong&gt;Google App Engine&lt;/strong&gt; 開発の手順を整理してみる。 &lt;a href="http://www.grails.org/plugin/app-engine"&gt;Grails - Plugin: Grails AppEngine plugin&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="開発環境構築からgrails-app-engine-pluginインストールまでの流れ"&gt;開発環境構築から、Grails App Engine Pluginインストールまでの流れ&lt;/h2&gt;&#10;&lt;p&gt;以前投稿したとおり。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2009/07/13/233000"&gt;勉強会に向けてGrails AppEngine Pluginについて調査 | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;code&gt;grails install-plugin app-engine&lt;/code&gt; コマンドを実行した後は、 &lt;code&gt;grails install-plugin gorm-jpa&lt;/code&gt; コマンドを実行。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;grails create-domain-class com.Book&lt;/code&gt; で適当なドメインクラス作成後、 &lt;code&gt;grails generate-all com.Book&lt;/code&gt; でview、controller作成。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;grails app-engine run&lt;/code&gt; コマンドで動作確認。&lt;/p&gt;&#10;&lt;h2 id="booklist-にアクセス"&gt;book/list にアクセス&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;http://localhost:8080/&lt;/code&gt; にアクセス。ちゃんと動作するようになった。&#10;&lt;code&gt;http://localhost:8080/book/list&lt;/code&gt; にアクセスすれば、ちゃんと本の一覧画面が表示される。&#10;&lt;code&gt;http://localhost:8080/book/create&lt;/code&gt; で新規登録画面へ。ただここで登録しようとするとエラーとなってしまう。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NullPointerException&#10; at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)&#10; at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)&#10; at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)&#10; at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306)&#10;Caused by: java.lang.NullPointerException&#10; at org.datanucleus.jpa.EntityManagerImpl.find(EntityManagerImpl.java:204)&#10; at org.datanucleus.store.appengine.jpa.DatastoreEntityManager.find(DatastoreEntityManager.java:48)&#10; at org.grails.jpa.JpaPluginSupport$__clinit__closure3_closure6_closure11_closure19.doCall(JpaPluginSupport.groovy:253)&#10; at com.BookController$_closure3.doCall(BookController.groovy:18)&#10; at com.BookController$_closure3.doCall(BookController.groovy)&#10; ... 4 more&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;プラグインの説明サイトを見ていると、 &lt;code&gt;grails generate-all com.Book&lt;/code&gt; にて作成したcontrollerでは正常に動作せず、手を加える必要があるようだ。&lt;/p&gt;</description></item><item><title>勉強会に向けてGrails AppEngine Pluginについて調査</title><link>https://genzouw.com/entry/2009/07/13/233000/313/</link><pubDate>Mon, 13 Jul 2009 23:30:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/13/233000/313/</guid><description>&lt;h2 id="環境設定プラグインインストールまでの流れ"&gt;環境設定(プラグインインストールまでの流れ)&lt;/h2&gt;&#10;&lt;p&gt;以前紹介した資料どおりです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://docs.google.com/present/edit?id=dgkcctp6_2123s6h5tc7"&gt;Google App EngineでGrails! - &amp;ldquo;Google Docs&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;code&gt;grails appengine plugin&lt;/code&gt; インストール後に、JPAかJDOかどちらを使用するか聞かれるが、 &lt;strong&gt;JPAを選びました。&lt;/strong&gt;&#10;理由は特にありません。&lt;/p&gt;&#10;&lt;p&gt;ちなみに、 &lt;code&gt;grails appengine plugin&lt;/code&gt; のversionは0.8.3になっていました。着実にバージョンアップしています。&lt;/p&gt;&#10;&lt;h2 id="ドメインクラスの作成"&gt;ドメインクラスの作成&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://docs.google.com/present/edit?id=dgkcctp6_2123s6h5tc7"&gt;Google App EngineでGrails! - &amp;ldquo;Google Docs&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;上記の資料ではドメインクラスを使用しない例しか記載していないかったので、ここでドメインクラスを作成。 &lt;code&gt;grails-app/domain&lt;/code&gt; 直下にクラスを配置すると動かないということなので、適当にパッケージを作成しました。ありきたりだが本の情報を管理するBookクラスを作成。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;grails create-domain-class com.Book&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Bookドメイン作成&lt;/p&gt;&#10;&lt;p&gt;作成後、カラムを追加。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;String name&lt;/li&gt;&#10;&lt;li&gt;String isbn&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="ビューコントローラーも作成"&gt;ビュー、コントローラーも作成&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grails generate-all com.Book&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;ViewとControllerも作成。&lt;/p&gt;&#10;&lt;h2 id="アプリケーション起動"&gt;アプリケーション起動&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grails app-engine run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;実行してからなかなか起動しない。かなりあせる。問題があるのか&amp;hellip;と思ったら &lt;code&gt;localhoat&lt;/code&gt; になっていました。そりゃ起動しない。&lt;/p&gt;&#10;&lt;p&gt;起動はするようになったけれども、com.BookControllerへアクセスでエラー発生。以下のとおり。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;span class="lnt"&gt;9&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: static com.Book.list&lt;span class="o"&gt;()&lt;/span&gt; is applicable &lt;span class="k"&gt;for&lt;/span&gt; argument types: &lt;span class="o"&gt;(&lt;/span&gt;org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap&lt;span class="o"&gt;)&lt;/span&gt; values: &lt;span class="o"&gt;[[&lt;/span&gt;max:10, action:list, controller:book&lt;span class="o"&gt;]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle&lt;span class="o"&gt;(&lt;/span&gt;DevAppEngineWebAppContext.java:54&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter&lt;span class="o"&gt;(&lt;/span&gt;TransactionCleanupFilter.java:43&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle&lt;span class="o"&gt;(&lt;/span&gt;DevAppEngineWebAppContext.java:54&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;at com.google.appengine.tools.development.JettyContainerService&lt;span class="nv"&gt;$ApiProxyHandler&lt;/span&gt;.handle&lt;span class="o"&gt;(&lt;/span&gt;JettyContainerService.java:306&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Caused by: groovy.lang.MissingMethodException: No signature of method: static com.Book.list&lt;span class="o"&gt;()&lt;/span&gt; is applicable &lt;span class="k"&gt;for&lt;/span&gt; argument types: &lt;span class="o"&gt;(&lt;/span&gt;org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap&lt;span class="o"&gt;)&lt;/span&gt; values: &lt;span class="o"&gt;[[&lt;/span&gt;max:10, action:list, controller:book&lt;span class="o"&gt;]]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;at com.BookController&lt;span class="nv"&gt;$_closure2&lt;/span&gt;.doCall&lt;span class="o"&gt;(&lt;/span&gt;BookController.groovy:14&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;at com.BookController&lt;span class="nv"&gt;$_closure2&lt;/span&gt;.doCall&lt;span class="o"&gt;(&lt;/span&gt;BookController.groovy&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;... &lt;span class="m"&gt;4&lt;/span&gt; more&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;code&gt;com.Book&lt;/code&gt; に &lt;code&gt;listメソッドがない&lt;/code&gt; と言われる。ローカルで動作させるのは無理？？&lt;/p&gt;</description></item><item><title>Google App EngineでGrailsの資料（第2回 「Groovyイン・アクション」読書会IN関西で使用）</title><link>https://genzouw.com/entry/2009/07/13/220600/315/</link><pubDate>Mon, 13 Jul 2009 22:06:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/07/13/220600/315/</guid><description>&lt;p&gt;&lt;a href="http://www.jggug.org/news/dai2kai%E3%80%8Cgroovyin%E3%83%BBakushon%E3%80%8Ddokushokaiinkansaikaisai"&gt;第2回 「Groovyイン・アクション」読書会IN関西 開催 ‎(main)‎&lt;/a&gt;での資料、全然アップできていなかった・・・&lt;/p&gt;&#10;&lt;p&gt;5/30(土)に使った資料であり、かつメンテナンスできていないけれども。&lt;/p&gt;&#10;&lt;p&gt;加えて同じような、しかももっとわかりやすい資料がアップされているけれども、自分が作成した資料もアップしておく。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://docs.google.com/present/edit?hl=ja&amp;amp;id=dgkcctp6_2123s6h5tc7"&gt;Google App EngineでGrails! - &amp;ldquo;Google Docs&amp;rdquo;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;他の方も見れるのかな？公開しているはずなんだけど。&lt;/p&gt;</description></item><item><title>ついにGoogle App EngineでGrails動いた！！</title><link>https://genzouw.com/entry/2009/05/19/211700/331/</link><pubDate>Tue, 19 May 2009 21:17:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/05/19/211700/331/</guid><description>&lt;p&gt;大興奮です！！&lt;/p&gt;&#10;&lt;p&gt;たった今、 &lt;strong&gt;Google App Engine&lt;/strong&gt; 上で &lt;strong&gt;Grails&lt;/strong&gt; が動きました！昨日設定した内容で問題なかったようです。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://genzouw.com/entry/2009/05/18/212600"&gt;Grails 1.1.1で、Google App Engineに再チャレンジ！ | ゲンゾウ用ポストイット&lt;/a&gt; から以降のいきさつは以下のとおり。&lt;/p&gt;&#10;&lt;h2 id="気持ちを切り替えてgoogle先生に尋ねる"&gt;気持ちを切り替えてGoogle先生に尋ねる&lt;/h2&gt;&#10;&lt;p&gt;昨日はすべて止めてしまったけど、娘が寝てから再度チャレンジしてみた。&lt;/p&gt;&#10;&lt;p&gt;google先生に &lt;strong&gt;datastore-indexes.xml&lt;/strong&gt; について質問してみると、関係がありそうなエントリが。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://blog.livedoor.jp/cbnanashi/archives/818468.html"&gt;CB NANASHI管理人ブログ : GAE/J、SDK 1.2.1が公開、バージョンアップ時の注意&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;また修正されたログ取得を試すためにappcfg.cmdを実行するとdatastore-indexes.xml がスキーマに合致しない旨の出ました。xmlの「xmlns=&amp;ldquo;&lt;a href="http://appengine.google.com/ns/datastore-indexes/1.0%22"&gt;http://appengine.google.com/ns/datastore-indexes/1.0&amp;quot;&lt;/a&gt;」を削除したところ動作しました。&lt;/p&gt;&#10;&lt;h2 id="そしてデプロイ再実行"&gt;そしてデプロイ再実行&lt;/h2&gt;&#10;&lt;p&gt;ということで、以下のファイルから上記に該当する箇所を削除。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ emacs target/war/WEB-INF/datastore-indexes.xml&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;再度実行。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nv"&gt;$APPENGINE_HOME&lt;/span&gt;/bin/appcfg.sh update ./target/war&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;おおお！！！いけた！！いけたよ！！！&#10;念願のGrailsがフリー環境のサーバーで動くよ！！！！！&#10;Google様、一生ついていきます！&lt;/p&gt;&#10;&lt;h2 id="そして"&gt;そして&lt;/h2&gt;&#10;&lt;p&gt;これを整理して、今月末の &lt;a href="http://www.jggug.org/news/dai2kai%E3%80%8Cgroovyin%E3%83%BBakushon%E3%80%8Ddokushokaiinkansaikaisai"&gt;第2回 「Groovyイン・アクション」読書会IN関西&lt;/a&gt; での &lt;strong&gt;LTネタ&lt;/strong&gt; としよう。&lt;/p&gt;</description></item><item><title>今更だけどGrailsの意味</title><link>https://genzouw.com/entry/2009/05/18/213000/333/</link><pubDate>Mon, 18 May 2009 21:30:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/05/18/213000/333/</guid><description>&lt;p&gt;今更だけどGrailsの名前の由来が分かった。&lt;/p&gt;&#10;&lt;p&gt;railsとかけているというのは分かっていたけどそれ以外にも意味があったんだね。&lt;/p&gt;&#10;&lt;p&gt;というか後付けなのかもしれないけど、ずっとGrailsのサイトのトップページに杯の絵がかかれているのがなんでだろう？？と思ってた。&lt;/p&gt;&#10;&lt;p&gt;土曜日にテレビのロードショーで「ダヴィンチコード」をやっていたのだけど、そこで&lt;strong&gt;イエスキリストの聖杯&lt;/strong&gt;について語るシーンが登場。それでその時の英語アップのシーンで「grail」の文字が。&lt;/p&gt;&#10;&lt;p&gt;知らなかった。grailって&lt;strong&gt;聖杯&lt;/strong&gt;って意味なんだね。&lt;/p&gt;</description></item><item><title>Grails 1.1.1で、Google App Engineに再チャレンジ！</title><link>https://genzouw.com/entry/2009/05/18/212600/334/</link><pubDate>Mon, 18 May 2009 21:26:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/05/18/212600/334/</guid><description>&lt;p&gt;pGrails 1.1.1がリリースされました。今回の目玉は &lt;strong&gt;Google App Engine&lt;/strong&gt; に対応したプラグインが使えること。以前試して挫折したので再度チャレンジしてみました。&lt;/p&gt;&#10;&lt;p&gt;ちなみにほとんど以下のサイトを参考にセットアップすればよいです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://www.grails.org/plugin/app-engine#comment_357"&gt;Grails - Plugin: Grails AppEngine plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;注意点だけメモしておきます。&lt;/p&gt;&#10;&lt;h2 id="実行環境"&gt;実行環境&lt;/h2&gt;&#10;&lt;h3 id="java"&gt;Java&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;java.version: 1.6.0_13&lt;/code&gt;&lt;/p&gt;&#10;&lt;h3 id="groovy"&gt;GROOVY&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;Groovy Version: 1.6.3&lt;/code&gt;&lt;/p&gt;&#10;&lt;h3 id="grails"&gt;Grails&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;Grails 1.1.1&lt;/code&gt;&lt;/p&gt;&#10;&lt;h2 id="環境変数の設定"&gt;環境変数の設定&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;google app engine sdk&lt;/strong&gt; のセットアップフォルダパスを環境変数に設定する必要がある。linuxの場合、&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;export APPENGINE_HOME=〜〜〜&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;としておく。&lt;/p&gt;&#10;&lt;h2 id="configgroovyの設定"&gt;Config.groovyの設定&lt;/h2&gt;&#10;&lt;p&gt;以下のアプリ名はすべて揃える。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;grails create-app&lt;/li&gt;&#10;&lt;li&gt;Config.groovyのgoogle.appengine.applicationの値&lt;/li&gt;&#10;&lt;li&gt;google app engine&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="アプリは動いたのか"&gt;アプリは動いたのか？&lt;/h2&gt;&#10;&lt;p&gt;で、結局動いたのかというと・・・動きませんでした。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;grails app-engine run&lt;/code&gt; を実行すると &lt;strong&gt;http://localhost:8080/&lt;/strong&gt; でアプリが起動するところまでは確認できました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;grails set-version 1&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;grails app-engine package&lt;/em&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;も正常に動作したので、後は配置するだけ、というところまでいけたのですが、&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;$APPENGINE_HOME/bin/appcfg.sh update ./target/war&lt;/em&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;を実行すると &lt;a href="http://www.grails.org/plugin/app-engine#comment_357"&gt;ここにかかれている内容&lt;/a&gt; とまったく同じエラーとなります。&lt;/p&gt;&#10;&lt;p&gt;しばらくはこちらの回答を定期的にチェックしてみます。&lt;/p&gt;</description></item><item><title>Google App Engineでgrails（成功事例が！！）</title><link>https://genzouw.com/entry/2009/04/20/091900/348/</link><pubDate>Mon, 20 Apr 2009 09:19:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/04/20/091900/348/</guid><description>&lt;p&gt;&lt;a href="http://d.hatena.ne.jp/mottsnite/20090418/1240039964"&gt;Google App EngineでGrails - leftovers&amp;hellip;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://d.hatena.ne.jp/uehaj/20090419/1240150227"&gt;Grails on GAE/Jを試してみた - Grな日々(uehajの日記)&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;にて、すでに&lt;strong&gt;Goole App Engine&lt;/strong&gt;にてGrailsを動作させた事例が挙がっています。&lt;/p&gt;&#10;&lt;p&gt;すごい！おめでとう！！&lt;/p&gt;&#10;&lt;p&gt;どうやら&lt;strong&gt;Grails-1.1.1&lt;/strong&gt;を取得して実行させないといけないみたい。まずは&lt;strong&gt;git&lt;/strong&gt;の勉強からか・・・&lt;/p&gt;&#10;&lt;p&gt;（一応&lt;a href="http://d.hatena.ne.jp/uehaj/20090419/1240150227"&gt;Grな日々(uehajの日記)&lt;/a&gt;にgitコマンドの例まであげてくれているのですが、今晩試してだめそうなら正式版まで待つ方向で。）&lt;/p&gt;</description></item><item><title>Google App EngineでGrails（その２）</title><link>https://genzouw.com/entry/2009/04/17/215600/349/</link><pubDate>Fri, 17 Apr 2009 21:56:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/04/17/215600/349/</guid><description>&lt;h2 id="ドメインを作ってアップロード"&gt;ドメインを作ってアップロード&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://genzouw.com/entry/2009/04/17/101700/351/"&gt;Google App EngineでGrails（その１） | ゲンゾウ用ポストイット&lt;/a&gt; の続き。&lt;/p&gt;&#10;&lt;div style="display: flex"&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4839927278&amp;linkId=3d716414447febcb42a8120971b1e1a5"&gt;&lt;/iframe&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=1935182447&amp;linkId=febf5ca3f7b734e24c6cac0cf185bde4"&gt;&lt;/iframe&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=en_US&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4798117366&amp;linkId=3e184ae7f555efa38cc4dacef87b88cc"&gt;&lt;/iframe&gt;&#10;&lt;/div&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails create-domain-class book &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;以下のようなドメインを作成。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Book&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Integer&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;関連物を一括生成&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails generate-all book &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;ほんで&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails war &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;当然これでは &lt;code&gt;app engine&lt;/code&gt; で動作しない。&lt;/p&gt;&#10;&lt;p&gt;ドメインはアノテーションを追記することで、 &lt;code&gt;app engine&lt;/code&gt; の両方で動作可能みたい。なのでアノテーションを追加。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;javax.jdo.annotations.*&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.google.appengine.api.datastore.Key&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@PersistenceCapable&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;identityType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IdentityType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;APPLICATION&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;detachable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Book&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="nl"&gt;nullable:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@PrimaryKey&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@Persistent&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;valueStrategy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IdGeneratorStrategy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;IDENTITY&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Key&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@Persistent&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nd"&gt;@Persistent&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Integer&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;試しにこの状態でwarファイル作成してみる。&lt;/p&gt;</description></item><item><title>Google App EngineでGrails（その１）</title><link>https://genzouw.com/entry/2009/04/17/101700/351/</link><pubDate>Fri, 17 Apr 2009 10:17:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/04/17/101700/351/</guid><description>&lt;p&gt;&lt;strong&gt;Google App Engine&lt;/strong&gt; でGrailsが使えるようになったらしいので、早速試してみる。&#10;（といっても、 &lt;a href="http://www.grails.org/plugin/app-engine#comment_158"&gt;Grails1.1.1から保障っぽいことが書かれている&lt;/a&gt; ので、なんとなく触って手触りを。&lt;/p&gt;&#10;&lt;h2 id="入手方法"&gt;入手方法&lt;/h2&gt;&#10;&lt;p&gt;以下のサイトに &lt;strong&gt;Download&lt;/strong&gt; のリンクがあるのでそこから &lt;strong&gt;grails-app-engine-0.4.zip&lt;/strong&gt; をダウンロードする。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://www.grails.org/plugin/app-engine"&gt;Grails - Plugin: Grails AppEngine plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="サンプルアプリ作成"&gt;サンプルアプリ作成&lt;/h2&gt;&#10;&lt;p&gt;適当なフォルダで&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails create-app test-app&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; test-app&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails install-plugin &amp;lt;DOWNLOAD_DIR&amp;gt;/grails-app-engine-0.4.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;・・・なんだかエラーが発生した。&lt;/p&gt;&#10;&lt;p&gt;どうやら &lt;strong&gt;Grails&lt;/strong&gt; のバージョンが1.0.3なのが原因みたい。&lt;/p&gt;&#10;&lt;p&gt;Grails1.1以上で動かさないといけないらしいので、最新Grailsをダウンロードしてインストール。&lt;/p&gt;&#10;&lt;p&gt;今度はうまくいったぽい。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Installed JDO config to est-app/grails-app/confPlugin app-engine-0.4 installed&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Plug-in provides the following new scripts:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------------------------------------------&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grails app-engine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Found events script in plugin app-engine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;No Google AppEngine SDK specified. Either &lt;span class="nb"&gt;set&lt;/span&gt; APPENGINE_HOME in your environment or specify google.appengine.sdk in your&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grails-app/conf/BuildConfig.groovy file&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="設定"&gt;設定&lt;/h2&gt;&#10;&lt;p&gt;いわれたとおり、 &lt;strong&gt;grails-app/conf/BuildConfig.groovy file&lt;/strong&gt; にapp-engine-sdkのﾊﾟｽを設定。&lt;/p&gt;</description></item><item><title>Grailsのプロジェクト、かなり増えたなぁ</title><link>https://genzouw.com/entry/2009/04/15/230700/352/</link><pubDate>Wed, 15 Apr 2009 23:07:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/04/15/230700/352/</guid><description>&lt;p&gt;grailsの勉強にと&lt;strong&gt;google code&lt;/strong&gt;でプロジェクト探していたときのこと。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://code.google.com/hosting/search?q=grails&amp;amp;projectsearch=Search+projects"&gt;検索結果&lt;/a&gt;が173件になっていた。&lt;/p&gt;&#10;&lt;p&gt;数ヶ月前まで数十件ぐらいだったような気がします。&lt;/p&gt;&#10;&lt;p&gt;なんだか一気に増えた。&lt;/p&gt;</description></item><item><title>grails-morph-plugin久々に修正</title><link>https://genzouw.com/entry/2009/04/03/071000/354/</link><pubDate>Fri, 03 Apr 2009 07:10:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/04/03/071000/354/</guid><description>&lt;p&gt;grails-morph-plugin久々に修正。&lt;/p&gt;&#10;&lt;p&gt;morphにwarファイルアップするときには、もうパスワードは不要になってるんですね。サイトから&lt;strong&gt;morph_deploy.properties&lt;/strong&gt;をダウンロードすると、そこにキー情報がかかれているのでパスワード不要になっているみたい。&lt;/p&gt;&#10;&lt;p&gt;以前はアップロードの際にユーザーID、パスワードを入力しなければならなかったと思ったけれど。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;grails-morph-plugin入れる&lt;/li&gt;&#10;&lt;li&gt;grails war-and-deploy-morph実行&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;だけでアップロードできた。&lt;/p&gt;</description></item><item><title>Griffonにはテンプレートのviewを作る機能はないのね</title><link>https://genzouw.com/entry/2009/03/19/234700/365/</link><pubDate>Thu, 19 Mar 2009 23:47:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/03/19/234700/365/</guid><description>&lt;p&gt;&lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt; と &lt;a href="http://groovy.codehaus.org/Griffon"&gt;Griffon&lt;/a&gt; はよくにた作りになっているけれども、やっぱり違う。&lt;/p&gt;&#10;&lt;p&gt;一番違いを感じるのが&lt;strong&gt;MVC&lt;/strong&gt;のセットを作成したとき。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Grailsは&lt;strong&gt;Model&lt;/strong&gt;（Domainクラス）作成後に雛形としての&lt;strong&gt;View&lt;/strong&gt;、&lt;strong&gt;Controller&lt;/strong&gt;を作成してくれる。&lt;/li&gt;&#10;&lt;li&gt;Griffonは&lt;strong&gt;Model&lt;/strong&gt;、&lt;strong&gt;View&lt;/strong&gt;、&lt;strong&gt;Controller&lt;/strong&gt;いずれも空っぽのソースのみが作られ、後はどうぞっていうスタンス。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;もっとも、「Griffon 0.1.0」でプロジェクト作成すればControllerには&lt;strong&gt;mvcGroupInit&lt;/strong&gt;っていうクロージャのみが作成されているけど。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Grails&lt;/strong&gt;がとっつきやすかった点の一つにこの雛形の作成があって、雛形を眺めているだけでGrailsでアプリを作る際にどんな風に作ったらいいかが見えてきていた。&lt;strong&gt;Griffon&lt;/strong&gt;にもこの点があったらいいのに。まだ&lt;strong&gt;Griffon&lt;/strong&gt;は雛形を作れるほどの標準的な作成方法が確立されていない？それともクライアントアプリは千差万別だからかな？&lt;/p&gt;&#10;&lt;div style="display: flex"&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4839927278&amp;linkId=3d716414447febcb42a8120971b1e1a5"&gt;&lt;/iframe&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=1935182447&amp;linkId=febf5ca3f7b734e24c6cac0cf185bde4"&gt;&lt;/iframe&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=en_US&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4798117366&amp;linkId=3e184ae7f555efa38cc4dacef87b88cc"&gt;&lt;/iframe&gt;&#10;&lt;/div&gt;</description></item><item><title>syntax-highlighter pluginのインストール時のバグが修正されたみたい</title><link>https://genzouw.com/entry/2009/03/05/093200/376/</link><pubDate>Thu, 05 Mar 2009 09:32:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/03/05/093200/376/</guid><description>&lt;p&gt;&lt;a href="https://genzouw.com/entry/2009/01/15/075600"&gt;ブログアプリをつくろう（しかしsyntax-highlighterがインストールできず） | ゲンゾウ用ポストイット&lt;/a&gt; で、 &lt;a href="http://www.grails.org/SyntaxHighlighter+Plugin"&gt;SyntaxHighlighter Plugin&lt;/a&gt; がインストールに失敗するという投稿をしました。修正方法なども一緒に連絡しておいたのですぐ直るかなーと思ってたのですが返事がないまま・・・&lt;/p&gt;&#10;&lt;p&gt;1/15に作成者にメールで連絡したのですが、昨日返事がありました。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;「もう直ったので、またつかったね♪」&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;忙しい中、修正ありがとうございます！&lt;/p&gt;</description></item><item><title>Help Balloons PluginでGUIにヘルプ機能を追加</title><link>https://genzouw.com/entry/2009/01/20/130000/402/</link><pubDate>Tue, 20 Jan 2009 13:00:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/01/20/130000/402/</guid><description>&lt;p&gt;&lt;a href="http://www.grails.org/HelpBalloons+Plugin"&gt;HelpBalloons Plugin&lt;/a&gt;というプラグインを使用して、画面の操作に関するヘルプ機能を追加できるようです。いつものように早速試してみる。&lt;/p&gt;&#10;&lt;h4 id="料理名"&gt;料理名&lt;/h4&gt;&#10;&lt;p&gt;&lt;a href="http://www.grails.org/HelpBalloons+Plugin"&gt;HelpBalloons Plugin&lt;/a&gt;&lt;/p&gt;&#10;&lt;h4 id="材料"&gt;材料&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;grails&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="作り方"&gt;作り方&lt;/h4&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;プロジェクトを作成する**（省略！）**&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.grails.org/HelpBalloons+Plugin"&gt;HelpBalloons Plugin&lt;/a&gt;をインストールする&lt;/li&gt;&#10;&lt;li&gt;適当な画面を作成**（省略！）**&lt;/li&gt;&#10;&lt;li&gt;gspに、 &lt;a href="http://www.grails.org/HelpBalloons+Plugin"&gt;HelpBalloons Plugin&lt;/a&gt;を組み込む&lt;/li&gt;&#10;&lt;li&gt;起動！&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h4 id="手順２"&gt;手順２&lt;/h4&gt;&#10;&lt;p&gt;&lt;span style="color: teal;"&gt;&lt;strong&gt;grails install-plugin help-balloons&lt;/strong&gt;&lt;/span&gt;を実行する。&lt;/p&gt;&#10;&lt;h4 id="手順４"&gt;手順４&lt;/h4&gt;&#10;&lt;p&gt;gspの&lt;strong&gt;ヘッダータグ&lt;/strong&gt;内に、以下の内容を追記する。（help ballooonsを使用する際のおまじない）&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&amp;lt;g:helpBalloons/&amp;gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;バルーンを表示したい箇所に、以下のようにタグを記述する。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&amp;lt;g:helpBalloon title=&amp;ldquo;こんにちわ&amp;rdquo; content=&amp;ldquo;てすとですよ&amp;rdquo;/&amp;gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="color: teal;"&gt; &lt;/span&gt; 文字通り、title属性はバルーンのタイトル（ウィンドウタイトルみたいなもの）、content属性は本文部分の内容をそれぞれ記述する。&lt;/p&gt;&#10;&lt;h4 id="手順５"&gt;手順５&lt;/h4&gt;&#10;&lt;p&gt;表示。 ここではタイトル部分（&lt;strong&gt;todo&lt;/strong&gt;）の右側に&lt;span style="color: rgb(153, 51, 0);"&gt;&lt;strong&gt;&amp;lt;g:helpBalloon title=&amp;ldquo;こんにちわ&amp;rdquo; content=&amp;ldquo;てすとですよ&amp;rdquo;/&amp;gt;&lt;/strong&gt;&lt;/span&gt;を記述してみた例。&lt;/p&gt;&#10;&lt;div style="clear: both; text-align: center;"&gt;&#10;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_c1sAJym_hc4/SXVQT9p5SwI/AAAAAAAAAUw/SGVKBxW7Hek/s1600-h/00000.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_c1sAJym_hc4/SXVQT9p5SwI/AAAAAAAAAUw/SGVKBxW7Hek/s320/00000.png" data-border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div style="clear: both; text-align: center;"&gt;&#10;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_c1sAJym_hc4/SXVQZJMbIxI/AAAAAAAAAU4/CLe4GJjRBgA/s1600-h/00001.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_c1sAJym_hc4/SXVQZJMbIxI/AAAAAAAAAU4/CLe4GJjRBgA/s320/00001.png" data-border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div style="clear: both; text-align: center;"&gt;&#10;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_c1sAJym_hc4/SXVQdURX6fI/AAAAAAAAAVA/DYQTTYAKUs8/s1600-h/00002.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_c1sAJym_hc4/SXVQdURX6fI/AAAAAAAAAVA/DYQTTYAKUs8/s320/00002.png" data-border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;なんだかかっこいい！！ちょっとかっこいいサイトっぽくみえる！よりわかりやすいGUIとしていいかもしれません。&lt;/p&gt;</description></item><item><title>Grails ModalBox Pluginでモーダルなウィンドウを表示</title><link>https://genzouw.com/entry/2009/01/16/070500/404/</link><pubDate>Fri, 16 Jan 2009 07:05:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/01/16/070500/404/</guid><description>&lt;h2 id="今回の料理名"&gt;今回の料理名&lt;/h2&gt;&#10;&lt;p&gt;モーダルなウィンドウ&lt;/p&gt;&#10;&lt;h2 id="材料"&gt;材料&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Grails&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="作り方"&gt;作り方&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;プロジェクトを作成する&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.grails.org/ModalBox+Plugin"&gt;ModalBox Plugin&lt;/a&gt; をインストールする&lt;/li&gt;&#10;&lt;li&gt;Domainクラス作成&lt;/li&gt;&#10;&lt;li&gt;適当な画面を作成&lt;/li&gt;&#10;&lt;li&gt;gspに、 &lt;a href="http://www.grails.org/ModalBox+Plugin"&gt;ModalBox Plugin&lt;/a&gt; を組み込む&lt;/li&gt;&#10;&lt;li&gt;起動！&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="手順１"&gt;手順１&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;grails create-app gstudy&lt;/code&gt;を作成してみました。&lt;/p&gt;&#10;&lt;h2 id="手順２"&gt;手順２&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;grails install-plugin modalbox&lt;/code&gt;を実行する。&lt;/p&gt;&#10;&lt;h2 id="手順３"&gt;手順３&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;grails create-domain-class entry&lt;/code&gt;でドメイン作成。以下のようなソースを記述&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;span class="lnt"&gt;24&#10;&lt;/span&gt;&lt;span class="lnt"&gt;25&#10;&lt;/span&gt;&lt;span class="lnt"&gt;26&#10;&lt;/span&gt;&lt;span class="lnt"&gt;27&#10;&lt;/span&gt;&lt;span class="lnt"&gt;28&#10;&lt;/span&gt;&lt;span class="lnt"&gt;29&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Entry&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; static hasMany = [&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; static belongsTo = [&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;size:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;editable:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;editable:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// for select-box, link etc..&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; String toString(){&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="手順４"&gt;手順４&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;grails generate-all entry&lt;/code&gt;を実行する。&lt;/p&gt;</description></item><item><title>ブログアプリをつくろう（しかし `syntax-highlighter` がインストールできず）</title><link>https://genzouw.com/entry/2009/01/15/075600/405/</link><pubDate>Thu, 15 Jan 2009 07:56:00 +0900</pubDate><guid>https://genzouw.com/entry/2009/01/15/075600/405/</guid><description>&lt;p&gt;ということで、久しぶりにGrailsを使って何かを作ってみる。&#10;ブログアプリを作ってみることにする。&lt;/p&gt;&#10;&lt;h2 id="まずはプラグインインストールしかし"&gt;まずはプラグインインストール、しかし&lt;/h2&gt;&#10;&lt;p&gt;今までエントリにも書いた&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;richui&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;syntax-highlighter&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;i18n-template&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;を&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;grails install-plugin 〜&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;でインストール、で問題ないはずが、 &lt;code&gt;syntax-highlighter&lt;/code&gt; だけインストールが失敗。&#10;最新版が &lt;strong&gt;0.1.2&lt;/strong&gt; だが、 &lt;strong&gt;0.1.1&lt;/strong&gt; のフォルダがないと起こられてしまう。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 10&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 11&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 12&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 13&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 14&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 15&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 16&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 17&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 18&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 19&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 20&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 21&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 22&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 23&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 24&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 25&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 26&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 27&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 28&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 29&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 30&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 31&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 32&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 33&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 34&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 35&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 36&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 37&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 38&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 39&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 40&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 41&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 42&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 43&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 44&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 45&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 46&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 47&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 48&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 49&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 50&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 51&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 52&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 53&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 54&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 55&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 56&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 57&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 58&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 59&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 60&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 61&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 62&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 63&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 64&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 65&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 66&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 67&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 68&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 69&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 70&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 71&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 72&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 73&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 74&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 75&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 76&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 77&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 78&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 79&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 80&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 81&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 82&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 83&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 84&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 85&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 86&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 87&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 88&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 89&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 90&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 91&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 92&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 93&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 94&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 95&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 96&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 97&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 98&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 99&#10;&lt;/span&gt;&lt;span class="lnt"&gt;100&#10;&lt;/span&gt;&lt;span class="lnt"&gt;101&#10;&lt;/span&gt;&lt;span class="lnt"&gt;102&#10;&lt;/span&gt;&lt;span class="lnt"&gt;103&#10;&lt;/span&gt;&lt;span class="lnt"&gt;104&#10;&lt;/span&gt;&lt;span class="lnt"&gt;105&#10;&lt;/span&gt;&lt;span class="lnt"&gt;106&#10;&lt;/span&gt;&lt;span class="lnt"&gt;107&#10;&lt;/span&gt;&lt;span class="lnt"&gt;108&#10;&lt;/span&gt;&lt;span class="lnt"&gt;109&#10;&lt;/span&gt;&lt;span class="lnt"&gt;110&#10;&lt;/span&gt;&lt;span class="lnt"&gt;111&#10;&lt;/span&gt;&lt;span class="lnt"&gt;112&#10;&lt;/span&gt;&lt;span class="lnt"&gt;113&#10;&lt;/span&gt;&lt;span class="lnt"&gt;114&#10;&lt;/span&gt;&lt;span class="lnt"&gt;115&#10;&lt;/span&gt;&lt;span class="lnt"&gt;116&#10;&lt;/span&gt;&lt;span class="lnt"&gt;117&#10;&lt;/span&gt;&lt;span class="lnt"&gt;118&#10;&lt;/span&gt;&lt;span class="lnt"&gt;119&#10;&lt;/span&gt;&lt;span class="lnt"&gt;120&#10;&lt;/span&gt;&lt;span class="lnt"&gt;121&#10;&lt;/span&gt;&lt;span class="lnt"&gt;122&#10;&lt;/span&gt;&lt;span class="lnt"&gt;123&#10;&lt;/span&gt;&lt;span class="lnt"&gt;124&#10;&lt;/span&gt;&lt;span class="lnt"&gt;125&#10;&lt;/span&gt;&lt;span class="lnt"&gt;126&#10;&lt;/span&gt;&lt;span class="lnt"&gt;127&#10;&lt;/span&gt;&lt;span class="lnt"&gt;128&#10;&lt;/span&gt;&lt;span class="lnt"&gt;129&#10;&lt;/span&gt;&lt;span class="lnt"&gt;130&#10;&lt;/span&gt;&lt;span class="lnt"&gt;131&#10;&lt;/span&gt;&lt;span class="lnt"&gt;132&#10;&lt;/span&gt;&lt;span class="lnt"&gt;133&#10;&lt;/span&gt;&lt;span class="lnt"&gt;134&#10;&lt;/span&gt;&lt;span class="lnt"&gt;135&#10;&lt;/span&gt;&lt;span class="lnt"&gt;136&#10;&lt;/span&gt;&lt;span class="lnt"&gt;137&#10;&lt;/span&gt;&lt;span class="lnt"&gt;138&#10;&lt;/span&gt;&lt;span class="lnt"&gt;139&#10;&lt;/span&gt;&lt;span class="lnt"&gt;140&#10;&lt;/span&gt;&lt;span class="lnt"&gt;141&#10;&lt;/span&gt;&lt;span class="lnt"&gt;142&#10;&lt;/span&gt;&lt;span class="lnt"&gt;143&#10;&lt;/span&gt;&lt;span class="lnt"&gt;144&#10;&lt;/span&gt;&lt;span class="lnt"&gt;145&#10;&lt;/span&gt;&lt;span class="lnt"&gt;146&#10;&lt;/span&gt;&lt;span class="lnt"&gt;147&#10;&lt;/span&gt;&lt;span class="lnt"&gt;148&#10;&lt;/span&gt;&lt;span class="lnt"&gt;149&#10;&lt;/span&gt;&lt;span class="lnt"&gt;150&#10;&lt;/span&gt;&lt;span class="lnt"&gt;151&#10;&lt;/span&gt;&lt;span class="lnt"&gt;152&#10;&lt;/span&gt;&lt;span class="lnt"&gt;153&#10;&lt;/span&gt;&lt;span class="lnt"&gt;154&#10;&lt;/span&gt;&lt;span class="lnt"&gt;155&#10;&lt;/span&gt;&lt;span class="lnt"&gt;156&#10;&lt;/span&gt;&lt;span class="lnt"&gt;157&#10;&lt;/span&gt;&lt;span class="lnt"&gt;158&#10;&lt;/span&gt;&lt;span class="lnt"&gt;159&#10;&lt;/span&gt;&lt;span class="lnt"&gt;160&#10;&lt;/span&gt;&lt;span class="lnt"&gt;161&#10;&lt;/span&gt;&lt;span class="lnt"&gt;162&#10;&lt;/span&gt;&lt;span class="lnt"&gt;163&#10;&lt;/span&gt;&lt;span class="lnt"&gt;164&#10;&lt;/span&gt;&lt;span class="lnt"&gt;165&#10;&lt;/span&gt;&lt;span class="lnt"&gt;166&#10;&lt;/span&gt;&lt;span class="lnt"&gt;167&#10;&lt;/span&gt;&lt;span class="lnt"&gt;168&#10;&lt;/span&gt;&lt;span class="lnt"&gt;169&#10;&lt;/span&gt;&lt;span class="lnt"&gt;170&#10;&lt;/span&gt;&lt;span class="lnt"&gt;171&#10;&lt;/span&gt;&lt;span class="lnt"&gt;172&#10;&lt;/span&gt;&lt;span class="lnt"&gt;173&#10;&lt;/span&gt;&lt;span class="lnt"&gt;174&#10;&lt;/span&gt;&lt;span class="lnt"&gt;175&#10;&lt;/span&gt;&lt;span class="lnt"&gt;176&#10;&lt;/span&gt;&lt;span class="lnt"&gt;177&#10;&lt;/span&gt;&lt;span class="lnt"&gt;178&#10;&lt;/span&gt;&lt;span class="lnt"&gt;179&#10;&lt;/span&gt;&lt;span class="lnt"&gt;180&#10;&lt;/span&gt;&lt;span class="lnt"&gt;181&#10;&lt;/span&gt;&lt;span class="lnt"&gt;182&#10;&lt;/span&gt;&lt;span class="lnt"&gt;183&#10;&lt;/span&gt;&lt;span class="lnt"&gt;184&#10;&lt;/span&gt;&lt;span class="lnt"&gt;185&#10;&lt;/span&gt;&lt;span class="lnt"&gt;186&#10;&lt;/span&gt;&lt;span class="lnt"&gt;187&#10;&lt;/span&gt;&lt;span class="lnt"&gt;188&#10;&lt;/span&gt;&lt;span class="lnt"&gt;189&#10;&lt;/span&gt;&lt;span class="lnt"&gt;190&#10;&lt;/span&gt;&lt;span class="lnt"&gt;191&#10;&lt;/span&gt;&lt;span class="lnt"&gt;192&#10;&lt;/span&gt;&lt;span class="lnt"&gt;193&#10;&lt;/span&gt;&lt;span class="lnt"&gt;194&#10;&lt;/span&gt;&lt;span class="lnt"&gt;195&#10;&lt;/span&gt;&lt;span class="lnt"&gt;196&#10;&lt;/span&gt;&lt;span class="lnt"&gt;197&#10;&lt;/span&gt;&lt;span class="lnt"&gt;198&#10;&lt;/span&gt;&lt;span class="lnt"&gt;199&#10;&lt;/span&gt;&lt;span class="lnt"&gt;200&#10;&lt;/span&gt;&lt;span class="lnt"&gt;201&#10;&lt;/span&gt;&lt;span class="lnt"&gt;202&#10;&lt;/span&gt;&lt;span class="lnt"&gt;203&#10;&lt;/span&gt;&lt;span class="lnt"&gt;204&#10;&lt;/span&gt;&lt;span class="lnt"&gt;205&#10;&lt;/span&gt;&lt;span class="lnt"&gt;206&#10;&lt;/span&gt;&lt;span class="lnt"&gt;207&#10;&lt;/span&gt;&lt;span class="lnt"&gt;208&#10;&lt;/span&gt;&lt;span class="lnt"&gt;209&#10;&lt;/span&gt;&lt;span class="lnt"&gt;210&#10;&lt;/span&gt;&lt;span class="lnt"&gt;211&#10;&lt;/span&gt;&lt;span class="lnt"&gt;212&#10;&lt;/span&gt;&lt;span class="lnt"&gt;213&#10;&lt;/span&gt;&lt;span class="lnt"&gt;214&#10;&lt;/span&gt;&lt;span class="lnt"&gt;215&#10;&lt;/span&gt;&lt;span class="lnt"&gt;216&#10;&lt;/span&gt;&lt;span class="lnt"&gt;217&#10;&lt;/span&gt;&lt;span class="lnt"&gt;218&#10;&lt;/span&gt;&lt;span class="lnt"&gt;219&#10;&lt;/span&gt;&lt;span class="lnt"&gt;220&#10;&lt;/span&gt;&lt;span class="lnt"&gt;221&#10;&lt;/span&gt;&lt;span class="lnt"&gt;222&#10;&lt;/span&gt;&lt;span class="lnt"&gt;223&#10;&lt;/span&gt;&lt;span class="lnt"&gt;224&#10;&lt;/span&gt;&lt;span class="lnt"&gt;225&#10;&lt;/span&gt;&lt;span class="lnt"&gt;226&#10;&lt;/span&gt;&lt;span class="lnt"&gt;227&#10;&lt;/span&gt;&lt;span class="lnt"&gt;228&#10;&lt;/span&gt;&lt;span class="lnt"&gt;229&#10;&lt;/span&gt;&lt;span class="lnt"&gt;230&#10;&lt;/span&gt;&lt;span class="lnt"&gt;231&#10;&lt;/span&gt;&lt;span class="lnt"&gt;232&#10;&lt;/span&gt;&lt;span class="lnt"&gt;233&#10;&lt;/span&gt;&lt;span class="lnt"&gt;234&#10;&lt;/span&gt;&lt;span class="lnt"&gt;235&#10;&lt;/span&gt;&lt;span class="lnt"&gt;236&#10;&lt;/span&gt;&lt;span class="lnt"&gt;237&#10;&lt;/span&gt;&lt;span class="lnt"&gt;238&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------------------------------------&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Reading &lt;span class="o"&gt;[&lt;/span&gt;triggers&lt;span class="o"&gt;]&lt;/span&gt; plug-in info ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;mkdir&lt;span class="o"&gt;]&lt;/span&gt; Created dir: /home/genzou/.grails/1.0.4/plugins/syntax-highlighter&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;get&lt;span class="o"&gt;]&lt;/span&gt; Getting:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://plugins.grails.org/grails-syntax-highlighter/tags/RELEASE_0_1_2/grails-syntax-highlighter-0.1.2.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;get&lt;span class="o"&gt;]&lt;/span&gt; To:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/.grails/1.0.4/plugins/syntax-highlighter/grails-syntax-highlighter-0.1.2.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...............&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;copy&lt;span class="o"&gt;]&lt;/span&gt; Copying &lt;span class="m"&gt;1&lt;/span&gt; file to&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/20_developments/scripts/grails/giki/plugins&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;mkdir&lt;span class="o"&gt;]&lt;/span&gt; Created dir:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/20_developments/scripts/grails/giki/plugins/syntax-highlighter-0.1.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;unzip&lt;span class="o"&gt;]&lt;/span&gt; Expanding:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/20_developments/scripts/grails/giki/plugins/grails-syntax-highlighter-0.1.2.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;into /home/genzou/20_developments/scripts/grails/giki/plugins/syntax-highlighter-0.1.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Compiling plugin syntax-highlighter-0.1.2 ... ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;groovyc&lt;span class="o"&gt;]&lt;/span&gt; Compiling &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="nb"&gt;source&lt;/span&gt; file to&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/.grails/1.0.4/projects/giki/classes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;mkdir&lt;span class="o"&gt;]&lt;/span&gt; Created dir:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/20_developments/scripts/grails/giki/web-app/plugins/syntax-highlighter-0.1.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;copy&lt;span class="o"&gt;]&lt;/span&gt; Copying &lt;span class="m"&gt;16&lt;/span&gt; files to&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/20_developments/scripts/grails/giki/web-app/plugins/syntax-highlighter-0.1.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Loading with installed plug-ins: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;syntaxHighlighter&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;developmentUtilities&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;richui&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;i18nTemplates&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Executing syntax-highlighter-0.1.2 plugin post-install script ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;mkdir&lt;span class="o"&gt;]&lt;/span&gt; Created dir:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/20_developments/scripts/grails/giki/web-app/js/syntaxhighlighter&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/home/genzou/20_developments/scripts/grails/giki/web-app/plugins/syntax-highlighter-0.1.1/js/syntaxhighlighter&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;not found.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;: /home/genzou/20_developments/scripts/grails/giki/web-app/plugins/syntax-highlighter-0.1.1/js/syntaxhighlighter&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;not found.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner&lt;span class="o"&gt;(&lt;/span&gt;AbstractFileSet.java:422&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.taskdefs.Copy.execute&lt;span class="o"&gt;(&lt;/span&gt;Copy.java:453&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.UnknownElement.execute&lt;span class="o"&gt;(&lt;/span&gt;UnknownElement.java:288&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.dispatch.DispatchUtils.execute&lt;span class="o"&gt;(&lt;/span&gt;DispatchUtils.java:105&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.Task.perform&lt;span class="o"&gt;(&lt;/span&gt;Task.java:348&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.taskdefs.Sequential.execute&lt;span class="o"&gt;(&lt;/span&gt;Sequential.java:62&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.dispatch.DispatchUtils.execute&lt;span class="o"&gt;(&lt;/span&gt;DispatchUtils.java:105&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.apache.tools.ant.Task.perform&lt;span class="o"&gt;(&lt;/span&gt;Task.java:348&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.util.AntBuilder.nodeCompleted&lt;span class="o"&gt;(&lt;/span&gt;AntBuilder.java:199&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.util.BuilderSupport.doInvokeMethod&lt;span class="o"&gt;(&lt;/span&gt;BuilderSupport.java:153&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.util.AntBuilder.doInvokeMethod&lt;span class="o"&gt;(&lt;/span&gt;AntBuilder.java:149&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.util.BuilderSupport.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;BuilderSupport.java:64&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantBuilder.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantBuilder.java:52&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:784&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:758&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:170&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at Script1.run&lt;span class="o"&gt;(&lt;/span&gt;Script1.groovy:18&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.GroovyShell.evaluate&lt;span class="o"&gt;(&lt;/span&gt;GroovyShell.java:543&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.GroovyShell.evaluate&lt;span class="o"&gt;(&lt;/span&gt;GroovyShell.java:518&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:778&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:758&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:170&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.IncludeTargets.leftShift&lt;span class="o"&gt;(&lt;/span&gt;IncludeTargets.groovy:49&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:778&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:758&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:170&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at InstallPlugin_groovy&lt;span class="nv"&gt;$_run_closure3&lt;/span&gt;.doCall&lt;span class="o"&gt;(&lt;/span&gt;InstallPlugin_groovy:189&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.DelegatingMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMetaClass.java:142&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:79&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:94&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:78&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at InstallPlugin_groovy&lt;span class="nv"&gt;$_run_closure3&lt;/span&gt;.doCall&lt;span class="o"&gt;(&lt;/span&gt;InstallPlugin_groovy&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.DelegatingMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMetaClass.java:142&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:79&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.Closure.call&lt;span class="o"&gt;(&lt;/span&gt;Closure.java:292&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.Script.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;Script.java:87&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:947&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:894&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.DelegatingMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMetaClass.java:142&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:79&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:94&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:78&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrent0&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:112&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at InstallPlugin_groovy&lt;span class="nv"&gt;$_run_closure1&lt;/span&gt;.doCall&lt;span class="o"&gt;(&lt;/span&gt;InstallPlugin_groovy:50&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.DelegatingMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMetaClass.java:142&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:79&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:94&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:78&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at InstallPlugin_groovy&lt;span class="nv"&gt;$_run_closure1&lt;/span&gt;.doCall&lt;span class="o"&gt;(&lt;/span&gt;InstallPlugin_groovy&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.DelegatingMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMetaClass.java:142&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:79&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.Closure.call&lt;span class="o"&gt;(&lt;/span&gt;Closure.java:292&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.Closure.call&lt;span class="o"&gt;(&lt;/span&gt;Closure.java:287&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.Closure.run&lt;span class="o"&gt;(&lt;/span&gt;Closure.java:368&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.DelegatingMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMetaClass.java:142&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.gant.GantMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;GantMetaClass.java:79&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:778&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:758&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:170&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethod0&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:198&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at gant.Gant.dispatch&lt;span class="o"&gt;(&lt;/span&gt;Gant.groovy:271&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at gant.Gant.this&lt;span class="nv"&gt;$2$dispatch&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;Gant.groovy&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:674&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.GeneratedMethodAccessor7.invoke&lt;span class="o"&gt;(&lt;/span&gt;Unknown Source&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:778&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:758&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:170&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at gant.Gant.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;Gant.groovy&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:78&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at gant.Gant.processTargets&lt;span class="o"&gt;(&lt;/span&gt;Gant.groovy:436&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:78&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at gant.Gant.processArgs&lt;span class="o"&gt;(&lt;/span&gt;Gant.groovy:372&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:912&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:946&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:756&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:778&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:758&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:170&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.grails.cli.GrailsScriptRunner.callPluginOrGrailsScript&lt;span class="o"&gt;(&lt;/span&gt;GrailsScriptRunner.groovy:261&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.reflection.CachedMethod.invoke&lt;span class="o"&gt;(&lt;/span&gt;CachedMethod.java:86&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaMethod.doMethodInvoke&lt;span class="o"&gt;(&lt;/span&gt;MetaMethod.java:230&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.MetaClassImpl.invokeStaticMethod&lt;span class="o"&gt;(&lt;/span&gt;MetaClassImpl.java:1105&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at groovy.lang.ExpandoMetaClass.invokeStaticMethod&lt;span class="o"&gt;(&lt;/span&gt;ExpandoMetaClass.java:957&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.InvokerHelper.invokeStaticMethod&lt;span class="o"&gt;(&lt;/span&gt;InvokerHelper.java:804&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeStaticMethodN&lt;span class="o"&gt;(&lt;/span&gt;ScriptBytecodeAdapter.java:215&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.grails.cli.GrailsScriptRunner.main&lt;span class="o"&gt;(&lt;/span&gt;GrailsScriptRunner.groovy:121&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0&lt;span class="o"&gt;(&lt;/span&gt;Native Method&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.NativeMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;NativeMethodAccessorImpl.java:39&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke&lt;span class="o"&gt;(&lt;/span&gt;DelegatingMethodAccessorImpl.java:25&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at java.lang.reflect.Method.invoke&lt;span class="o"&gt;(&lt;/span&gt;Method.java:597&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.grails.cli.support.GrailsStarter.rootLoader&lt;span class="o"&gt;(&lt;/span&gt;GrailsStarter.java:193&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; at org.codehaus.groovy.grails.cli.support.GrailsStarter.main&lt;span class="o"&gt;(&lt;/span&gt;GrailsStarter.java:218&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------------------------------------------------------------------&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;code&gt;web-app/plugins/syntax-hihlighter-0.1.1&lt;/code&gt; 以下に &lt;code&gt;css/syntaxhighlighter&lt;/code&gt; 、&lt;code&gt;js/syntaxhighlighter&lt;/code&gt; というフォルダを作成したらインストールは成功した。&lt;/p&gt;</description></item><item><title>Grails 1.1 Beta1 リリースなんだって</title><link>https://genzouw.com/entry/2008/12/04/060000/423/</link><pubDate>Thu, 04 Dec 2008 06:00:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/12/04/060000/423/</guid><description>&lt;p&gt;&lt;a href="http://xmldo.blogspot.com/2008/11/grails-11-beta1.html"&gt;xmlDo.net - Grails Web Development: Grails 1.1 Beta1 リリース！&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;おーまた最新のGrailsがリリースされるんですね。&lt;/p&gt;&#10;&lt;p&gt;勝手に脳内で変換されていたため、最新版が1.4と思っていました。なぜ退化？？と思っていたのですが、そりゃそうです。退化するわけがないです。&lt;/p&gt;&#10;&lt;p&gt;オープンソースのままでいてね。&lt;/p&gt;</description></item><item><title>Grails Code Reading　第１５回　めっちゃおもしろそう</title><link>https://genzouw.com/entry/2008/12/03/064900/425/</link><pubDate>Wed, 03 Dec 2008 06:49:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/12/03/064900/425/</guid><description>&lt;p&gt;&lt;a href="http://d.hatena.ne.jp/kawaoso/20081201/1228105376"&gt;http://d.hatena.ne.jp/kawaoso/20081201/1228105376&lt;/a&gt;これは・・・やばい、おもしろそう。&lt;/p&gt;&#10;&lt;p&gt;**Groat（古い銀貨）**にかなり興味あり。&lt;/p&gt;&#10;&lt;p&gt;位置ファイルで、しかも550行程度でサーバーって。すごすぎ。ソース一読の必要ありですね。&lt;/p&gt;</description></item><item><title>grails morph plugin最新版（しばらく動かなくてすみません）</title><link>https://genzouw.com/entry/2008/10/15/073900/466/</link><pubDate>Wed, 15 Oct 2008 07:39:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/10/15/073900/466/</guid><description>&lt;p&gt;&lt;a href="https://genzouw.com/entry/2008/09/21/214200"&gt;Morph開発専用のプラグインを作ってみよう | ゲンゾウ用ポストイット&lt;/a&gt; で作りかけだった &lt;a href="http://www.morphexchange.com/"&gt;Morph Appspace&lt;/a&gt; を利用したgrailsアプリ開発プラグインを修正しました。&lt;/p&gt;&#10;&lt;p&gt;誰も使ってないだろうなぁと思ってそのままだったのですが、動くように直してほしい、と言う声をありまして、修正した次第です。こんなしょーもないやつが作ったものでも使ってくれる人がいるんだなと思い、感謝です。&#10;僕のPCがふっとんでしまったことを考慮、またソースの指摘事項をいただけるように、 &lt;strong&gt;Google Code プロジェクト&lt;/strong&gt; に配置してみました。情報は以下のとおり。&lt;/p&gt;&#10;&lt;h2 id="プロジェクト"&gt;プロジェクト&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://code.google.com/p/grails-morph-plugin/"&gt;grails-morph-plugin - Google Code&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="プラグインのソース"&gt;プラグインのソース&lt;/h2&gt;&#10;&lt;p&gt;SVNで管理。 以下のコマンドでチェックアウト可能（のはず？）&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ svn checkout http://grails-morph-plugin.googlecode.com/svn/trunk/ grails-morph-plugin-read-only&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="プラグインのインストール方法"&gt;プラグインのインストール方法&lt;/h2&gt;&#10;&lt;p&gt;対象プロジェクトで以下のコマンドを実行。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails install-plugin http://grails-morph-plugin.googlecode.com/files/grails-morph-plugin-0.1.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="プラグインの機能について"&gt;プラグインの機能について&lt;/h2&gt;&#10;&lt;p&gt;以下のコマンドを追加&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;grails deploy-morph&lt;/code&gt;（warファイルを &lt;strong&gt;morph appspace&lt;/strong&gt; に配置）&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;grails war-and-deploy-morph&lt;/code&gt;（warファイルを作成し、warファイルを &lt;strong&gt;morph appspace&lt;/strong&gt; に配置）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;また、warファイル作成時（ローカルでのアプリ実行時は対象外）には以下の処理を行う。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;web.xmlにmorph appspaceで必要な設定の書き込み&lt;/li&gt;&#10;&lt;li&gt;morph appspace上でメール送信機能を利用するためのbean定義&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;code&gt;mailSender(org.springframework.mail.javamail.JavaMailSenderImpl)&lt;/code&gt; を利用することが可能。 &lt;strong&gt;morph appspace&lt;/strong&gt; 上ではこれ以外のメール送信操作を許可していないようです。&lt;/p&gt;&#10;&lt;h2 id="必要な設定"&gt;必要な設定&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;プロジェクトルートにmorph_deploy.propertiesを配置（詳しくは &lt;strong&gt;morph appspace&lt;/strong&gt; のマニュアルなどを参照）&lt;/li&gt;&#10;&lt;li&gt;application.properties（morph_deploy.propertiesでも動くとおもいます。）に以下のmorphアカウント設定情報を追加&#10;&lt;ul&gt;&#10;&lt;li&gt;morph.username&lt;/li&gt;&#10;&lt;li&gt;morph.password&lt;/li&gt;&#10;&lt;li&gt;morph.proxyHost &lt;strong&gt;（proxyを使用しないネットワーク環境の場合には不要）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;morph.proxyPort &lt;strong&gt;（proxyを使用しないネットワーク環境の場合には不要）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="ひとこと"&gt;ひとこと&lt;/h2&gt;&#10;&lt;p&gt;問題や動かないなどありましたら、ぜひ教えてください。ソースなどの指摘事項も待ってます。&lt;/p&gt;</description></item><item><title>Groovy Eclipse Pluginを試してみた</title><link>https://genzouw.com/entry/2008/10/02/074100/473/</link><pubDate>Thu, 02 Oct 2008 07:41:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/10/02/074100/473/</guid><description>&lt;p&gt;以前もブログに書きましたが、家のOSを &lt;a href="http://www.ubuntulinux.jp/"&gt;Ubuntu&lt;/a&gt; に変えました。いくつか使用感として気になるところはありましたが、アプリをいくつか追加インストールして今のところは使用しています。&lt;/p&gt;&#10;&lt;p&gt;さて、今まで &lt;strong&gt;Groovy&lt;/strong&gt; 、 &lt;strong&gt;Grails&lt;/strong&gt; はサクラエディタを使って開発していたのですが、当然 &lt;strong&gt;Ubuntu&lt;/strong&gt; では使えません。したがって新しいエディタなり、開発環境を作らなければなりません。&lt;/p&gt;&#10;&lt;h2 id="geditを使ってみる"&gt;geditを使ってみる&lt;/h2&gt;&#10;&lt;p&gt;まずは標準で組み込まれているテキストエディタ &lt;strong&gt;gedit&lt;/strong&gt; を試してみました。&lt;/p&gt;&#10;&lt;p&gt;結果、キーワードがハイライト表示されない。 &lt;strong&gt;html&lt;/strong&gt; や &lt;strong&gt;Java&lt;/strong&gt; などはハイライト表示される。設定方法が不明なので・・・却下。&lt;/p&gt;&#10;&lt;h2 id="emacsを使ってみる"&gt;Emacsを使ってみる&lt;/h2&gt;&#10;&lt;p&gt;Emacs使ってみた。&#10;・・・いいんです。ハイライト表示も &lt;strong&gt;Groovy&lt;/strong&gt; の &lt;strong&gt;emacs&lt;/strong&gt; 設定サイトを見たら、簡単にできました。&lt;/p&gt;&#10;&lt;p&gt;でも・・・キーボード操作がなぁ。コピペとかリドゥとか細かいところがどうしてもなれないし、小指が痛いw。Windowsからの移行では多分に違和感があります。却下。&lt;/p&gt;&#10;&lt;h2 id="eclipse-pluginを使ってみる"&gt;Eclipse Pluginを使ってみる&lt;/h2&gt;&#10;&lt;p&gt;軽いエディタを諦め、Eclipseを使うことにしました。&lt;/p&gt;&#10;&lt;p&gt;まずは &lt;strong&gt;Synaptic&lt;/strong&gt; から、Eclipse追加。問題なくEclipse起動。&lt;/p&gt;&#10;&lt;p&gt;次に、「 &lt;strong&gt;ヘルプ-&amp;gt;ソフトウェア更新-&amp;gt;検索およびインストール&lt;/strong&gt; 」と選択する。ポップアップ画面で、「インストールする新規フィーチャーを検索」を選び、「 &lt;strong&gt;次へ&lt;/strong&gt; 」ボタン。&lt;/p&gt;&#10;&lt;p&gt;「 &lt;strong&gt;新規リモートサイト&lt;/strong&gt; 」ボタンを押して &lt;strong&gt;名前&lt;/strong&gt; に適当に（Groovyとしておいた）、 &lt;strong&gt;url&lt;/strong&gt; には &lt;a href="http://groovy.codehaus.org/Eclipse+Plugin"&gt;Groovy - Eclipse Plugin&lt;/a&gt; サイトにかかれているアップデートサイトurlを記述（ &lt;a href="http://groovy.codehaus.org/Eclipse+Plugin"&gt;http://dist.codehaus.org/groovy/distributions/update/&lt;/a&gt; ）。「 &lt;strong&gt;次へ&lt;/strong&gt; 」ボタン。&lt;/p&gt;&#10;&lt;p&gt;あとは流れに身を任せていけば（？）インストール完了。&lt;/p&gt;&#10;&lt;h2 id="感想"&gt;感想&lt;/h2&gt;&#10;&lt;p&gt;Grailsプロジェクトが新規作成できるようになっています。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://genzouw.com/wp-content/uploads/2008/10/eclipse-plugin-01-1024x819.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;でも &lt;strong&gt;新規プロジェクト作成&lt;/strong&gt; はあとで。&#10;&lt;strong&gt;既存のGrailsプロジェクト&lt;/strong&gt; を取り込んでみる。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://genzouw.com/wp-content/uploads/2008/10/eclipse-plugin-02-1024x819.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;うわ、めちゃ簡単。Eclipse上にエラーも出ませんでした。簡単に動かした感じでは、補完も効きそうです。&lt;/p&gt;</description></item><item><title>Morph AppSpace利用時には、jdkのバージョンに注意</title><link>https://genzouw.com/entry/2008/09/27/130000/475/</link><pubDate>Sat, 27 Sep 2008 13:00:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/09/27/130000/475/</guid><description>&lt;p&gt;最近ほんとにmorphのネタしか書いてないですが。かなり前に引っかかったので、メモ。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://panel.mor.ph/"&gt;Morph Appspace&lt;/a&gt;サーバーを利用する際には、&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;jdkのバージョン&lt;/strong&gt;&lt;/span&gt;に注意。&lt;/p&gt;&#10;&lt;p&gt;具体的には、どうやらサーバー上は&lt;span style="color: #ff6600;"&gt;&lt;strong&gt;java1.5バージョン&lt;/strong&gt;&lt;/span&gt;で動作している模様。したがって&lt;span style="color: #ff6600;"&gt;&lt;strong&gt;java1.6バージョン&lt;/strong&gt;&lt;/span&gt;を使用したりしていた場合には、バージョン違いのエラーが発生してしまうことがある。&lt;/p&gt;&#10;&lt;p&gt;どうやら以下のケースで発生する模様。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;java1.6の構文を利用している。&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;他pluginを使用している。（i18n-templatesは大丈夫っぽい。acegiやquartzはだめだった）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;プラグインを使用していた場合でも、&lt;strong&gt;jdk1.5&lt;/strong&gt;で&lt;strong&gt;コンパイル-&amp;gt;war作成-&amp;gt;アップ&lt;/strong&gt;すると、問題なく動作しました。&lt;/p&gt;</description></item><item><title>morph-pluginのレビューするよ</title><link>https://genzouw.com/entry/2008/09/27/000600/476/</link><pubDate>Sat, 27 Sep 2008 00:06:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/09/27/000600/476/</guid><description>&lt;p&gt;ようやく &lt;a href="http://code.google.com/p/morphplugin/"&gt;morphplugin - Google Code&lt;/a&gt; のソースレビューをしました。&#10;教えていただいてから開始するまでに時間がかかってしまった。&lt;/p&gt;&#10;&lt;p&gt;ソースを見たところ・・・意外に機能が少ない。&lt;/p&gt;&#10;&lt;p&gt;どうやら、このプラグインは &lt;code&gt;grails war&lt;/code&gt; コマンド実行時に、 &lt;code&gt;web.xml&lt;/code&gt; の要素としてメールセッション情報を追加するだけのようでした。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MorphGrailsPlugin&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;dependsOn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[:]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;author&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Daniel Latorre&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;authorEmail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;danilat83@gmail.com&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;doWithWebDescriptor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;grails.env&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;production&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;resourceRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xml&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;resource-ref&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;resourceRef&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;description&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Morphlabs Datasource&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;res-ref-name&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;jdbc/morph-ds&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;res-type&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;javax.sql.DataSource&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;res-auth&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Container&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;意外と &lt;a href="https://genzouw.com/entry/2008/09/21/214200"&gt;Morph開発専用のプラグインを作ってみよう | ゲンゾウ用ポストイット&lt;/a&gt; でやろうとしている機能のほうが機能的に豊富かも。やっぱりプラグイン開発してみようかな。&lt;/p&gt;</description></item><item><title>Morph開発専用のプラグインを作ってみよう</title><link>https://genzouw.com/entry/2008/09/21/214200/481/</link><pubDate>Sun, 21 Sep 2008 21:42:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/09/21/214200/481/</guid><description>&lt;p&gt;&lt;a href="https://genzouw.com/entry/2008/09/18/221900"&gt;Grails開発用に、開発支援プラグイン作ってみたよ | ゲンゾウ用ポストイット&lt;/a&gt; で取り上げた開発支援用のプラグインですが、 &lt;a href="http://www.morphexchange.com/"&gt;Morph eXchange&lt;/a&gt; を使用した開発のニーズが増えてきているようなので、専用プラグインとして作成して見ようと思っています。&lt;/p&gt;&#10;&lt;h2 id="機能"&gt;機能&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;grails deploy-morph&lt;/code&gt; コマンド以外は、今回作ってみたものです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;grails deploy-morph&lt;/code&gt; コマンド（ &lt;a href="http://www.morphexchange.com/"&gt;Morph eXchange&lt;/a&gt; にアップロード、デプロイ）&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;grails war&lt;/code&gt; コマンド強化機能&#10;&lt;ul&gt;&#10;&lt;li&gt;war作成時に、 &lt;strong&gt;web.xml&lt;/strong&gt; にメールセッション情報を追加&lt;/li&gt;&#10;&lt;li&gt;war作成時に、spring管理beanとして &lt;strong&gt;mailSession、mailSender&lt;/strong&gt; ビーンを追加&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;h4 id="プラグイン名"&gt;&lt;strong&gt;プラグイン名&lt;/strong&gt;&lt;/h4&gt;&#10;&lt;p&gt;&lt;del&gt;morph-utilities&lt;/del&gt;&#10;&lt;strong&gt;morph-plugin&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h4 id="コーディング"&gt;コーディング&lt;/h4&gt;&#10;&lt;p&gt;&lt;code&gt;DeployMorph.groovy&lt;/code&gt; ファイルは、以前のブログで作ったものを利用しました。&lt;/p&gt;&#10;&lt;p&gt;&lt;del&gt;&lt;code&gt;MorphUtilitiesGrailsPlugin.groovy&lt;/code&gt;&lt;/del&gt; &lt;code&gt;MorphPluginGrailsPlugin.groovy&lt;/code&gt; ファイルには、以下のように記述しました。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;span class="lnt"&gt;24&#10;&lt;/span&gt;&lt;span class="lnt"&gt;25&#10;&lt;/span&gt;&lt;span class="lnt"&gt;26&#10;&lt;/span&gt;&lt;span class="lnt"&gt;27&#10;&lt;/span&gt;&lt;span class="lnt"&gt;28&#10;&lt;/span&gt;&lt;span class="lnt"&gt;29&#10;&lt;/span&gt;&lt;span class="lnt"&gt;30&#10;&lt;/span&gt;&lt;span class="lnt"&gt;31&#10;&lt;/span&gt;&lt;span class="lnt"&gt;32&#10;&lt;/span&gt;&lt;span class="lnt"&gt;33&#10;&lt;/span&gt;&lt;span class="lnt"&gt;34&#10;&lt;/span&gt;&lt;span class="lnt"&gt;35&#10;&lt;/span&gt;&lt;span class="lnt"&gt;36&#10;&lt;/span&gt;&lt;span class="lnt"&gt;37&#10;&lt;/span&gt;&lt;span class="lnt"&gt;38&#10;&lt;/span&gt;&lt;span class="lnt"&gt;39&#10;&lt;/span&gt;&lt;span class="lnt"&gt;40&#10;&lt;/span&gt;&lt;span class="lnt"&gt;41&#10;&lt;/span&gt;&lt;span class="lnt"&gt;42&#10;&lt;/span&gt;&lt;span class="lnt"&gt;43&#10;&lt;/span&gt;&lt;span class="lnt"&gt;44&#10;&lt;/span&gt;&lt;span class="lnt"&gt;45&#10;&lt;/span&gt;&lt;span class="lnt"&gt;46&#10;&lt;/span&gt;&lt;span class="lnt"&gt;47&#10;&lt;/span&gt;&lt;span class="lnt"&gt;48&#10;&lt;/span&gt;&lt;span class="lnt"&gt;49&#10;&lt;/span&gt;&lt;span class="lnt"&gt;50&#10;&lt;/span&gt;&lt;span class="lnt"&gt;51&#10;&lt;/span&gt;&lt;span class="lnt"&gt;52&#10;&lt;/span&gt;&lt;span class="lnt"&gt;53&#10;&lt;/span&gt;&lt;span class="lnt"&gt;54&#10;&lt;/span&gt;&lt;span class="lnt"&gt;55&#10;&lt;/span&gt;&lt;span class="lnt"&gt;56&#10;&lt;/span&gt;&lt;span class="lnt"&gt;57&#10;&lt;/span&gt;&lt;span class="lnt"&gt;58&#10;&lt;/span&gt;&lt;span class="lnt"&gt;59&#10;&lt;/span&gt;&lt;span class="lnt"&gt;60&#10;&lt;/span&gt;&lt;span class="lnt"&gt;61&#10;&lt;/span&gt;&lt;span class="lnt"&gt;62&#10;&lt;/span&gt;&lt;span class="lnt"&gt;63&#10;&lt;/span&gt;&lt;span class="lnt"&gt;64&#10;&lt;/span&gt;&lt;span class="lnt"&gt;65&#10;&lt;/span&gt;&lt;span class="lnt"&gt;66&#10;&lt;/span&gt;&lt;span class="lnt"&gt;67&#10;&lt;/span&gt;&lt;span class="lnt"&gt;68&#10;&lt;/span&gt;&lt;span class="lnt"&gt;69&#10;&lt;/span&gt;&lt;span class="lnt"&gt;70&#10;&lt;/span&gt;&lt;span class="lnt"&gt;71&#10;&lt;/span&gt;&lt;span class="lnt"&gt;72&#10;&lt;/span&gt;&lt;span class="lnt"&gt;73&#10;&lt;/span&gt;&lt;span class="lnt"&gt;74&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;grails.util.*&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.codehaus.groovy.grails.commons.*&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.springframework.mail.*&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MorphPluginGrailsPlugin&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;dependsOn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[:]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;author&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;genzou&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;authorEmail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;genzouw@gmail.com&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Plugin summary/headline&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;This plugin help you to develop the application on the morph appspace.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// URL to the plugin&amp;#39;s documentation&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;documentation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://code.google.com/p/grails-morph-plugin/&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;doWithSpring&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GrailsUtil&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;GrailsApplication&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ENV_PRODUCTION&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mailSession&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;springframework&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;jndi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;JndiObjectFactoryBean&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;jndiName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;java:/comp/env/mail/Session&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mailSender&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;springframework&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;mail&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;javamail&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;JavaMailSenderImpl&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mailSession&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;doWithApplicationContext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="n"&gt;applicationContext&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// TODO Implement post initialization spring config (optional)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;doWithWebDescriptor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GrailsUtil&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;GrailsApplication&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ENV_PRODUCTION&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;servlets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xml&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;servlet&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;servlets&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;servlets&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;resource-ref&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Morphlabs Mail Session&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;res-ref-name&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;mail/Session&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;res-type&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;javax.mail.Session&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;res-auth&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Container&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;doWithDynamicMethods&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="n"&gt;ctx&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// TODO Implement registering dynamic methods to classes (optional)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;onChange&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// TODO Implement code that is executed when any artefact that this plugin is&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// watching is modified and reloaded. The event contains: event.source,&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// event.application, event.manager, event.ctx, and event.plugin.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;def&lt;/span&gt; &lt;span class="n"&gt;onConfigChange&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// TODO Implement code that is executed when the project configuration changes.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// The event is the same as for &amp;#39;onChange&amp;#39;.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;実行時のパラメータによって、web.xml、springに情報を設定するかしないかを判断しています。&#10;これにより、warファイル作成時にのみ実行されるようになります。&lt;/p&gt;</description></item><item><title>Grails SyntaxHighlighter Pluginで、コードをhtml化するアプリを作ったよ</title><link>https://genzouw.com/entry/2008/09/20/071600/483/</link><pubDate>Sat, 20 Sep 2008 07:16:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/09/20/071600/483/</guid><description>&lt;p&gt;今日も &lt;strong&gt;Grails&lt;/strong&gt; です。&lt;/p&gt;&#10;&lt;h2 id="余談"&gt;余談&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;griffon&lt;/strong&gt; についてもいろいろ試してみたりしたいのですが、家のCPU:1.6GHz、メモリ：512MBマシンでは、 &lt;strong&gt;Griffon&lt;/strong&gt; のコンパイルなどで悲鳴が聞こえてきます。世界がとまります。&lt;/p&gt;&#10;&lt;p&gt;したがって同じぐらいのスペックのlinuxマシン上で、ssh経由で &lt;code&gt;grails war&lt;/code&gt; や &lt;code&gt;grails run-app&lt;/code&gt; しています。これだともうちょっと低スペックマシンでも快適に開発できそう。&lt;/p&gt;&#10;&lt;h4 id="今回の料理名"&gt;今回の料理名&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://gstudy.morphexchange.com/sourceCode/create"&gt;ソースコードをハイライト化するアプリ&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="材料"&gt;材料&lt;/h4&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Grails&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="作り方"&gt;作り方&lt;/h4&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="http://docs.codehaus.org/display/GRAILS/SyntaxHighlighter+Plugin"&gt;SyntaxHighlighter Plugin&lt;/a&gt; をインストール&lt;/li&gt;&#10;&lt;li&gt;必須ではないけど、日本語化させるなら &lt;a href="http://grails.org/I18n+Templates+Plugin"&gt;I18n Templates Plugin&lt;/a&gt; （これについては説明を省く）&lt;/li&gt;&#10;&lt;li&gt;Domainクラス作成&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;grails generate-all&lt;/code&gt; でview、controller作成&lt;/li&gt;&#10;&lt;li&gt;viewをちょこっと触る。&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://docs.codehaus.org/display/GRAILS/SyntaxHighlighter+Plugin"&gt;SyntaxHighlighter Plugin&lt;/a&gt; のjs、cssをｺﾋﾟｰ&lt;/li&gt;&#10;&lt;li&gt;起動！&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h4 id="手順１"&gt;手順１&lt;/h4&gt;&#10;&lt;p&gt;&lt;code&gt;grails install-plugin syntax-highlighter&lt;/code&gt; しろと書かれているので、実行。プラグインが追加される。&lt;/p&gt;&#10;&lt;h4 id="手順２"&gt;手順２&lt;/h4&gt;&#10;&lt;p&gt;省略します。&lt;/p&gt;&#10;&lt;h4 id="手順３"&gt;手順３&lt;/h4&gt;&#10;&lt;p&gt;２つ作ってみた。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;ProgramingLanguage.groovy&lt;/li&gt;&#10;&lt;li&gt;SourceCode.groovy&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;span class="lnt"&gt;24&#10;&lt;/span&gt;&lt;span class="lnt"&gt;25&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProgramingLanguage&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; static hasMany = [&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; static belongsTo = [&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;jsCode&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;blank:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;unique:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;jsCode&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;blank:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;unique:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;editable:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;editable:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;span class="lnt"&gt;24&#10;&lt;/span&gt;&lt;span class="lnt"&gt;25&#10;&lt;/span&gt;&lt;span class="lnt"&gt;26&#10;&lt;/span&gt;&lt;span class="lnt"&gt;27&#10;&lt;/span&gt;&lt;span class="lnt"&gt;28&#10;&lt;/span&gt;&lt;span class="lnt"&gt;29&#10;&lt;/span&gt;&lt;span class="lnt"&gt;30&#10;&lt;/span&gt;&lt;span class="lnt"&gt;31&#10;&lt;/span&gt;&lt;span class="lnt"&gt;32&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SourceCode&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; static hasMany = [&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;belongsTo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nl"&gt;language:&lt;/span&gt; &lt;span class="n"&gt;ProgramingLanguage&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Boolean&lt;/span&gt; &lt;span class="n"&gt;gutter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Boolean&lt;/span&gt; &lt;span class="n"&gt;controls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Boolean&lt;/span&gt; &lt;span class="n"&gt;collapse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Integer&lt;/span&gt; &lt;span class="n"&gt;firstLine&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Boolean&lt;/span&gt; &lt;span class="n"&gt;showColumns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Boolean&lt;/span&gt; &lt;span class="n"&gt;escapeXml&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;blank:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;maxSize:&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;gutter&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;controls&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;collapse&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;firstLine&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;showColumns&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;escapeXml&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;display:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;display:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h4 id="手順４"&gt;手順４&lt;/h4&gt;&#10;&lt;p&gt;省略します。そのまま。&lt;/p&gt;</description></item><item><title>Grails RichUIがすばらしすぎる件について</title><link>https://genzouw.com/entry/2008/09/19/120500/484/</link><pubDate>Fri, 19 Sep 2008 12:05:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/09/19/120500/484/</guid><description>&lt;p&gt;なんというか・・・もう悲しくなります。&lt;/p&gt;&#10;&lt;p&gt;今まで僕が一生懸命作ってきた&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;autoComplete機能&lt;/li&gt;&#10;&lt;li&gt;タブ機能&lt;/li&gt;&#10;&lt;li&gt;HTMLエディタ機能&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;っていったいなんだったんだよ！！という気分。&lt;/p&gt;&#10;&lt;p&gt;いつものMorph Appspaceに配置した &lt;a href="http://gstudy.morphexchange.com/blogEntry/create"&gt;こちらのアプリ&lt;/a&gt; を見てください。これ、15分程度で完成しました・・・・。別に僕がすごいわけでも何でもなく、 &lt;strong&gt;Grails&lt;/strong&gt; と &lt;a href="http://docs.codehaus.org/display/GRAILS/RichUI+Plugin#RichUIPlugin-RichTextEditor"&gt;RichUI Plugin&lt;/a&gt; がすごすぎなわけです。&lt;/p&gt;&#10;&lt;h2 id="その１"&gt;その１&lt;/h2&gt;&#10;&lt;p&gt;まずはDomainクラスを作成。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;class BlogEntry &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /*&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; static &lt;span class="nv"&gt;hasMany&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; */&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /*&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; static &lt;span class="nv"&gt;belongsTo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; */&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; String title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; String content&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Date dateCreated&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Date lastUpdated&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; static &lt;span class="nv"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; title&lt;span class="o"&gt;(&lt;/span&gt;blank:false&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; content&lt;span class="o"&gt;(&lt;/span&gt;blank:false, maxSize:8000&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dateCreated&lt;span class="o"&gt;(&lt;/span&gt;editable:false&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lastUpdated&lt;span class="o"&gt;(&lt;/span&gt;editable:false&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="その２"&gt;その２&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;grails install-plugin richui&lt;/code&gt; コマンドで、プラグインをインストール&lt;/p&gt;</description></item><item><title>mkawa.xmldo: GrailsアプリをMorph AppSpaceで動かしてみる</title><link>https://genzouw.com/entry/2008/09/19/064300/485/</link><pubDate>Fri, 19 Sep 2008 06:43:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/09/19/064300/485/</guid><description>&lt;p&gt;&lt;a href="http://mkawablog.blogspot.com/2008/09/grailsmorph-appspace.html#links"&gt;mkawaさんのブログ&lt;/a&gt; を見て、Morph AppSpaceサーバーの利用方法が &lt;a href="http://www.atmarkit.co.jp/index.html"&gt;＠IT - アットマーク・アイティ&lt;/a&gt; に掲載されていることを知りました。&lt;/p&gt;&#10;&lt;p&gt;なるほど。わざわざ英語読んで踏ん張らなくてもよかったんだ・・・くやしぃ。&lt;/p&gt;&#10;&lt;h2 id="追記"&gt;追記&lt;/h2&gt;&#10;&lt;p&gt;最近、上記の記事を書かれている &lt;a href="http://www.kronos-jp.net/"&gt;株式会社クロノス&lt;/a&gt; さんのもと社員の方とご飯を食べにいってきました。びしっとした雰囲気の方でした。&#10;宣伝じゃないですが &lt;a href="http://www.kronos-jp.net/"&gt;株式会社クロノス&lt;/a&gt; さんはよく@ITで記事を拝見させてもらっていました。&#10;&lt;strong&gt;あの豆蔵を超える！東の豆蔵、西のクロノス！&lt;/strong&gt; と呼ばれるべく日々上を目指していく会社とのことでした。関西の会社だったとは。&lt;/p&gt;&#10;&lt;p&gt;定期的に勉強会を開いているということなので、一度お邪魔してみようかな。働いてみたいかも。&lt;/p&gt;</description></item><item><title>Grails開発用に、開発支援プラグイン作ってみたよ</title><link>https://genzouw.com/entry/2008/09/18/221900/486/</link><pubDate>Thu, 18 Sep 2008 22:19:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/09/18/221900/486/</guid><description>&lt;p&gt;こちらの記事に感化され、Grailsで自分用プラグインを作成してみました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/fits/20080703/1215107047"&gt;Grails プラグインの作り方 - シンプルな easyb 実行プラグインを作成 - なんとなくな Developer のメモ&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div style="display: flex"&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4839927278&amp;linkId=3d716414447febcb42a8120971b1e1a5"&gt;&lt;/iframe&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=1935182447&amp;linkId=febf5ca3f7b734e24c6cac0cf185bde4"&gt;&lt;/iframe&gt;&#10;&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=verywealthyda-22&amp;language=en_US&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4798117366&amp;linkId=3e184ae7f555efa38cc4dacef87b88cc"&gt;&lt;/iframe&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="機能"&gt;機能&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;code&gt;graisl create-domain-class&lt;/code&gt; コマンドで作成されるDomainクラス（毎回記述する固定プロパティを追加）&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.morphexchange.com/"&gt;Morph eXchange&lt;/a&gt; にアップロード、デプロイするための &lt;code&gt;grails deploy-morph&lt;/code&gt; コマンド&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;grails generate-all&lt;/code&gt; コマンド実行時に、すでにcontroller、viewが存在した場合上書きをするかを聞かれるが、面倒なので強制生成する &lt;code&gt;graisl generate-all-force&lt;/code&gt; コマンド&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="インストール"&gt;インストール&lt;/h2&gt;&#10;&lt;p&gt;対象プロジェクトで、以下のコマンドを実行。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ grails install-plugin http://genzouw.googlepages.com/grails-development-utilities-0.1.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="機能１について"&gt;機能１について&lt;/h2&gt;&#10;&lt;p&gt;通常は空のDomainクラスが作成されますが、いくつかプロパティが追加されたソースが生成されます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@artifact.package@class&lt;/span&gt; &lt;span class="nd"&gt;@artifact.name&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; static hasMany = [&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; static belongsTo = [&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dateCreated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;editable:&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;lastUpdated&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;editable:&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;僕がGrailsアプリを作成しているときは大抵以下のプロパティは必須としています。したがって、それらを出力内容に追加しました。&lt;/p&gt;</description></item><item><title>"Morph Exchange" を使って、無料でGrailsアプリ作成</title><link>https://genzouw.com/entry/2008/08/30/222600/492/</link><pubDate>Sat, 30 Aug 2008 22:26:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/08/30/222600/492/</guid><description>&lt;h2 id="作ってみた"&gt;作ってみた！&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="http://grails-test.morphexchange.com/entry/list"&gt;Grailsリアルタイム掲示板&lt;/a&gt; を作ってみました。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Grails&lt;/strong&gt; は生産性がいいです。&#10;1.5時間程度でできました。&lt;/p&gt;&#10;&lt;h2 id="morph-exchange-について"&gt;&lt;a href="http://www.morphexchange.com/"&gt;Morph Exchange&lt;/a&gt; について&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="http://www.morphexchange.com/"&gt;Morph Exchange&lt;/a&gt; というホスティングサービスを利用すると、無料でGrailsアプリを動作させるためのスペースが作れます。&#10;データベースも使用可能です。&#10;僕は &lt;strong&gt;PostgreSql&lt;/strong&gt; を使用して作ってみました。&lt;/p&gt;&#10;&lt;h2 id="ひとこと"&gt;ひとこと&lt;/h2&gt;&#10;&lt;p&gt;時間があればソースコードも公開します。&lt;/p&gt;</description></item><item><title>簡易掲示板作ったよ</title><link>https://genzouw.com/entry/2008/07/01/062100/497/</link><pubDate>Tue, 01 Jul 2008 06:21:00 +0900</pubDate><guid>https://genzouw.com/entry/2008/07/01/062100/497/</guid><description>&lt;p&gt;先週、仕事が早く終わった日があった。リーダーが「二時間ぐらい好きなことしててよいよ」と言ってくれたので、簡易掲示板つくってみた。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;制限はたくさんあるけど二時間かからずにできた。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://genzou-server.selfip.com/gstudy-0.1/entry/list"&gt;■簡易掲示板■&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;特筆すべきてんと言うほどでもないけど&#10;10秒間隔で自動的に最新表示します。&lt;/p&gt;&#10;&lt;p&gt;一度似たようなの作ったけどIEだと最新表示されないらしい・・・キャッシュ無効にしないと。&lt;/p&gt;&#10;&lt;h2 id="今後追加したら面白いかもと思っている機能"&gt;今後追加したら面白いかもと思っている機能&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;現在サイトにいる人数、人の表示&lt;/li&gt;&#10;&lt;li&gt;ファイルアップロード&lt;/li&gt;&#10;&lt;li&gt;お気に入りの人がログインしたら携帯メールで知らせてくれる&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;なんかmixiぽいな&lt;/p&gt;&#10;&lt;p&gt;なんかこんなん出来たらすごい！みたいなのないかな？アイデアに乏しい&lt;/p&gt;</description></item></channel></rss>