﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-薄薄的Java</title><link>http://www.blogjava.net/bobojava/</link><description>技术本来很广，但我们可以把它变薄！</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 05:18:22 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 05:18:22 GMT</pubDate><ttl>60</ttl><item><title>【转】Google 选择 Jetty, 放弃 Tomcat</title><link>http://www.blogjava.net/bobojava/articles/292234.html</link><dc:creator>Rique</dc:creator><author>Rique</author><pubDate>Sat, 22 Aug 2009 15:53:00 GMT</pubDate><guid>http://www.blogjava.net/bobojava/articles/292234.html</guid><wfw:comment>http://www.blogjava.net/bobojava/comments/292234.html</wfw:comment><comments>http://www.blogjava.net/bobojava/articles/292234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bobojava/comments/commentRss/292234.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bobojava/services/trackbacks/292234.html</trackback:ping><description><![CDATA[<div class="blog_content">
<p>Google 应用系统引擎最初是以 <a href="http://tomcat.apache.org/">Apache Tomcat</a> 作为其 webserver/servlet 容器的，但最终将切换到 <a href="http://www.mortbay.org/jetty/">Jetty</a> 上。 这个决定让许多开发人员都诧异的想问：为什么要做这样的改变？Tomcat 有什么问题吗？ 我们获得的一次访问 <a href="http://www.webtide.com/">Webtide</a> ——Jetty 背后的公司——里的这个团队的机会，得到了关于这个决定背后更详细的信息。</p>
<p><strong>记者：</strong> 为什么Google选择Jetty作为其应用系统的引擎，而不是 Tomcat 或其他的？</p>
<blockquote style="background-color: #008080"><span style="color: #ffffff">Google选择Jetty的关键原因是它的体积和灵活性。 在云计算里，体积的因素是很重要，如果你运行几万个Jetty的实例（Google就是这样干的），每个server省1兆，那就会省10几个G的内存（或能够给其他应用提供更多的内存）。 </span></blockquote>
<blockquote style="color: #ffffff; background-color: #008080">Jetty 被设计成了可插拔和可扩展的特性，这样Google就可以高度的自定义它。 他们在其中替换了他们自己的HTTP connector，Google认证，以及他们自己的session集群。也真是奇怪，这个特性对于云计算来说是非常出色的，但同时也让Jetty非常适合嵌入小的设备中，例如手机和机顶盒。</blockquote>
<p><strong>记者：</strong> 是什么促使Jetty成为Java里出色的servlet容器？</p>
<blockquote style="background-color: #003366"><span style="color: #ffffff">我们在开发Jetty时，并没有想着要把它开发成一个全功能的应用server（尽管它是的）。每一项功能都考虑了可插拔性，所以，如果你不需要他，你就可以不把它加载到内存里，把它从request 处理调用链中去掉。如果你不需要sessons，你可以把session处理器拿掉，这样你就不要浪费资源去来回寻找session cookie了。当你每秒钟都有出来上千个请求时，这些微小的查找动作的开销是非常的大的。</span> </blockquote>
<blockquote style="color: #ffffff; background-color: #003366">我们也并没有想当然的企图通过设计就可以得到最优化的代码，我们是如同收集沙粒般，每次得到一些人告诉我们如何才能有好的JVMs优化和垃圾回收办法。这是真的，已经很小心的代码仍然能被优化，最后的效果就是避免创建新的对象。例如，我们在Jetty里使用并行处理技术，但我们并没有使用很多标准的并行处理数据结构，因为这需要创建太多的对象。所以，只是作为个例子，我们使用了双并行锁循环 arrays，而不是采用并行链式 lists，这样我们就能够在不创建对象的情况下，获得了非阻塞并行效果。</blockquote>
<p><strong>记者：</strong> 是什么使Jetty成为开发人员的一个有用的server平台的（例如：testing）？</p>
<blockquote style="color: #ffffff; background-color: #333333">Jetty 已经在一些流行框架中内置了，例如GWT，scala/lift，grails，Jruby等等，还有很多。如果你使用了这些技术，你就直接可以用Jetty了。 Jetty-maven 插件是另外一个非常优秀的开发工具，它能让web应用在不打包成war文件的情况下运行。源文件可以直接编辑，在不需要把它重新放进war文件的情况下获得测试结果。 Jetty嵌入式的特征让我们不再需要写通过写那些main方法、通过你的IDE，调试器或 profiler 来运行之类的无聊的事情。</blockquote>
<p><strong>记者：</strong> Jetty在处理 client-server 请求时有什么独特的地方吗？</p>
<blockquote style="background-color: #333333"><span style="color: #ffffff">Jetty 现在是一个第二代的异步处理server。 过去的两年里，我们让Jetty实现了处理异步请求的功能，这成了它核心架构的一部分。就像其他的支持异步serlets容器一样，我想，他们会发现这个东西并不是看起来的那么简单和容易。 我们的异步HTTP引擎被我们复用在了HTTP client 上，所以我们可以大量的降低request 和 responses 消耗。</span> </blockquote>
<blockquote style="background-color: #333333"><span style="color: #ffffff">同时，就像我之前提到过的，我们的请求处理器是可扩展和可插拔的，这让web application可以被单独省略掉，或者是单独使用，或者是进一步扩展的application。</span></blockquote>
<p><strong>记者：</strong> 有没有其他Jetty使用的案例，大的或小的？</p>
<blockquote style="color: #ffffff; background-color: #333333">使用Jetty的公司有像Zimbra/Yahoo，这意味着Jetty正作为web mail 服务器，为百万级的用户提供服务。 Eclipse IDE把它内置了进去，这意味着有成百万的开发者在桌面运行Jetty。 Jetty被 hadoop map/reduce cluster使用，在其上有几千个点的集群，处理着世界最大的TB级别的数据分类排序工作。 我们也有 J2ME 的接口，有本地编译器，所以我们可以在手机上，家用路由器和 Java cards 上运行。 更多的Jetty使用的例子可以参考 <a href="http://docs.codehaus.org/display/JETTY/Jetty+Powered">http://docs.codehaus.org/display/JETTY/Jetty+Powered</a> </blockquote>
<p><strong>记者：</strong> Jetty的将来或蓝图是怎样的？</p>
<blockquote style="color: #ffffff; background-color: #333333">Jetty 最近的计划是发布 7.0.0 版本，这将会完全的迁移到eclipse foundation 下。 Jetty 7 将会支持很多 servlet 3.0 的特征，但是并不会使用新的API 和 不会依赖Java 1.6 。 Jetty 7后，很快我们会发布Jetty 8，这将会完全支持 servlet 3.0 和 Java 1.6，Jetty 会继续的创新 和跟踪各种web 2.0 里的其他的新成果。 我们现在已经能支持 Firefox 3.5 里的跨域Ajax功能，我们可以在cometd版本里使用这个。 我们很快就会增加对 WebSocket 和 BWTP 的支持。 对 Google wave 以及相关协议的支持的问题已经优先排到了我们的议事日程上了。</blockquote>
<p><strong>记者：</strong> Google/Jetty 还有其他的计划吗？</p>
<blockquote style="background-color: #333333"><span style="color: #ffffff">Google有他们自己下棋的棋局，我们并不清楚。 我们在JavaOne大会上曾经和App Engine开发者们有个简单的对话，我们愿意听他们任何的反馈和意见，用来改进Jetty的可嵌入性和可扩展性。</span></blockquote>
<p>下面的跟Webtide团队的讨论中，我们询问了SpringSource 从Jetty转换到Tomcat的事情。 </p>
<p><strong>记者：</strong> 你们如何看待 SpringSource 把 Grails 从本来作为缺省容器的Jetty换成了Tomcat的事情？</p>
<blockquote style="color: #ffffff; background-color: #333333">原因是grails开发的领导感觉使用Tomcat能从内部的Tomcat开发人员哪里获得更好的&#8221;服务&#8220;。我猜测，他们把Grails的用户驱赶到某一个平台，以让SpringSource能更好的销售他们的技术支持服务。几年前我们看到了相同的事情，JBoss 雇佣了一下tomcat开发人员后把Jetty提出成了Tomcat，并最终和Mort Bay达成了商业合同。 很遗憾，这些商业协议对技术选择有如此大的影响，当相同的是，一些基础结构的工程也正聚集到也application server 为中心的队伍里来。 </blockquote>
<blockquote><span style="color: #ffffff; background-color: #333333">Grails将会继续同时支持对Jetty和Tomcat的集成，但会改成Tomcat为缺省服务。</span> <br />
</blockquote>
<p>这看起来是 SpringSource使用/攀附 Tomcat 的一个特别合适的论断。</p>
<br />
本篇文章原地址：<a href="http://lifeside.javaeye.com/blog/452361">http://lifeside.javaeye.com/blog/452361</a><br />
</div>
<img src ="http://www.blogjava.net/bobojava/aggbug/292234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bobojava/" target="_blank">Rique</a> 2009-08-22 23:53 <a href="http://www.blogjava.net/bobojava/articles/292234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】JS代码在IE和FireFox间的区别</title><link>http://www.blogjava.net/bobojava/articles/291851.html</link><dc:creator>Rique</dc:creator><author>Rique</author><pubDate>Wed, 19 Aug 2009 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/bobojava/articles/291851.html</guid><wfw:comment>http://www.blogjava.net/bobojava/comments/291851.html</wfw:comment><comments>http://www.blogjava.net/bobojava/articles/291851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bobojava/comments/commentRss/291851.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bobojava/services/trackbacks/291851.html</trackback:ping><description><![CDATA[<p>1.&nbsp;&nbsp;&nbsp; HTML 对象的 id 作为对象名的问题<br />
IE：HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用<br />
FF：不支持<br />
解决方法：使用document.getElementById替代document.all</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果控件只有name,没有id, 用getElementById时: <br />
IE：可以找到对象<br />
FF：返回NULL<br />
解决方法：所有控件必须设置ID属性</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Evel:<br />
IE：支持，利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象<br />
FF：不支持。<br />
解决方法：统一使用getElementById(idName) 代替 eval(idName)。</p>
<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event：<br />
IE：用全局对象window.event<br />
FF：event只能在事件发生的现场使用，在调用函数时传入event对象<br />
解决方法：使用之前做一下浏览器类型判断，各用各的。</p>
<p>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象名称中美元符号&#8216;$&#8217;改为使用下划线&#8216;_&#8217;</p>
<p>6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 集合类对象问题<br />
IE：可以使用()或[]获取集合类对象<br />
FF：只能使用[]获取集合类对象<br />
现有代码中存在许多，不能在 FF 下运行<br />
解决方法:统一使用[]获取集合类对象。document.form.item("itemName") 这样的语句改为document.form.elements["elementName"]</p>
<p>7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 变量名与某 HTML 对象 id 相同的问题<br />
IE：不能使用与 HTML 对象 id 相同的变量名<br />
FF：可以使用<br />
解决方法：在声明变量时，一律加上 var ，以避免歧义，这样在 IE 中亦可正常运行。<br />
此外，最好不要取与 HTML 对象 id 相同的变量名，以减少错误。</p>
<p>8.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event定位问题<br />
IE：支持event.x 和event.y<br />
FF：支持event.pageX和event.pageY<br />
解决方法，统一使用event.clientX和event.clientY，但是在FF中event.clientX 与 event.pageX 有微妙的差别（当整个页面有滚动条的时候），不过大多数时候是等效的。如果要完全一样，可以判断浏览器类型后对应使用。</p>
<p>9.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 父结点的问题<br />
IE：parentElement parentElement.children<br />
FF：parentNode parentNode.childNodes<br />
childNodes的下标的含义在IE和FF中不同，FF使用DOM规范，childNodes中会插入空白文本节点。一般可以通过node.getElementsByTagName()来回避这个问题。</p>
<p><br />
当html中节点缺失时，IE和FF对parentNode的解释不同，例如<br />
&lt;form&gt;<br />
&lt;table&gt;<br />
&nbsp; &lt;input/&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
IE：input.parentNode的值为空节点<br />
FF：input.parentNode的值为form <br />
FF中节点没有removeNode方法，必须使用如下方法 node.parentNode.removeChild(node)</p>
<p>10.&nbsp;&nbsp; const 问题<br />
现有问题：<br />
IE：不支持 const 关键字。如 const constVar = 32; 在IE中这是语法错误。<br />
FF：支持<br />
解决方法：不使用 const ，以 var 代替。</p>
<p>11.&nbsp;&nbsp; body 对象<br />
IE：在body标签完全被读入之后才存在<br />
FF：在body标签没有被浏览器完全读入之前就存在</p>
<p>12.&nbsp;&nbsp; 自定义属性问题<br />
IE：可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性<br />
FF：只能使用getAttribute()获取自定义属性.<br />
解决方法：统一通过getAttribute()获取自定义属性</p>
<p>13.&nbsp;&nbsp; event.srcElement问题<br />
IE：even.srcElement<br />
FF：even.target<br />
解决方法:使用时判断浏览器类型，各用各的。</p>
<p>14.&nbsp;&nbsp; 模态和非模态窗口<br />
IE：支持模态和非模态窗口<br />
FF：不支持<br />
解决方法：直接使用window.open(pageURL,name,parameters)方式打开新窗口。如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。</p>
<p>15.&nbsp;&nbsp; innerText<br />
IE：innerText<br />
FF：textContent</p>
<p>16.&nbsp;&nbsp; 类似 obj.style.height = imgObj.height 的语句<br />
IE：有效<br />
FF：无效<br />
解决方法：统一使用obj.style.height = imgObj.height + 'px';</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客:http://blog.csdn.net/nileel/archive/2009/08/19/4461687.aspx</p>
<img src ="http://www.blogjava.net/bobojava/aggbug/291851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bobojava/" target="_blank">Rique</a> 2009-08-19 19:08 <a href="http://www.blogjava.net/bobojava/articles/291851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2整合EJB3.0简单实例</title><link>http://www.blogjava.net/bobojava/articles/289702.html</link><dc:creator>Rique</dc:creator><author>Rique</author><pubDate>Tue, 04 Aug 2009 00:50:00 GMT</pubDate><guid>http://www.blogjava.net/bobojava/articles/289702.html</guid><wfw:comment>http://www.blogjava.net/bobojava/comments/289702.html</wfw:comment><comments>http://www.blogjava.net/bobojava/articles/289702.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/bobojava/comments/commentRss/289702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bobojava/services/trackbacks/289702.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 例子使用的工具：MyEclipse6.6，Jboss5.1, Tomcat6.18.&nbsp;实现功能描述：通过Struts2调用EJB3.0的远程方法，完成简单的登陆功能，只是简单的字符串比对，未使用持久层。首先创键EJB project，我的项目名称为：S2Login。然后定义Session Bean&nbsp;&nbsp; LoginServiceBean实现远程接口Login...&nbsp;&nbsp;<a href='http://www.blogjava.net/bobojava/articles/289702.html'>阅读全文</a><img src ="http://www.blogjava.net/bobojava/aggbug/289702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bobojava/" target="_blank">Rique</a> 2009-08-04 08:50 <a href="http://www.blogjava.net/bobojava/articles/289702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Grails入门之二： 一切从Hello World开始</title><link>http://www.blogjava.net/bobojava/articles/259394.html</link><dc:creator>Rique</dc:creator><author>Rique</author><pubDate>Thu, 12 Mar 2009 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/bobojava/articles/259394.html</guid><wfw:comment>http://www.blogjava.net/bobojava/comments/259394.html</wfw:comment><comments>http://www.blogjava.net/bobojava/articles/259394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bobojava/comments/commentRss/259394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bobojava/services/trackbacks/259394.html</trackback:ping><description><![CDATA[Grails是个典型的遵照MVC模式开发的框架，至少包含了以下3个部分：控制器(Controllers)、领域(Domain)对象(模型)、视图(Views)。既然环境配置好了，Hello项目的基本构架也通过grails create-app hello创建好了，下面进入第一个grails例子。<br />
&nbsp;<br />
进入hello项目文件夹(&gt;cd hello)，输入 grails create-controller hello<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">E:\Groovy\projects\hello&gt;grails&nbsp;create-controller&nbsp;hello<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Welcome&nbsp;to&nbsp;Grails&nbsp;</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;-&nbsp;http://grails.org/<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Licensed&nbsp;under&nbsp;Apache&nbsp;Standard&nbsp;License&nbsp;</span><span style="color: #000000">2.0</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Grails&nbsp;home&nbsp;is&nbsp;set&nbsp;to:&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Base&nbsp;Directory:&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Note:&nbsp;No&nbsp;plugin&nbsp;scripts&nbsp;found<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Running&nbsp;script&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\scripts\CreateController.groovy<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Environment&nbsp;set&nbsp;to&nbsp;development<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;E:\Groovy\projects\hello\grails-app\controllers<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Created&nbsp;Controller&nbsp;for&nbsp;Hello<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\views\hello<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;E:\Groovy\projects\hello\test\integration<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Created&nbsp;ControllerTests&nbsp;for&nbsp;Hello</span></div>
这样，在grails-app/controller目录下自动生成HelloController.groovy文件，同时grails-test下生成HelloControllerTest.groovy测试文件。<br />
我们编辑HelloController控制器，在index{}中输出Hello World.其中，index是系统默认的操作，相当于JSP中的index.jsp。<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HelloController&nbsp;{<br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;index&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;{render&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">Hello&nbsp;world!</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;}<br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">}</span></div>
运行项目 grails run-app<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">E:\Groovy\projects\hello&gt;grails&nbsp;run-app<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Welcome&nbsp;to&nbsp;Grails&nbsp;</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;-&nbsp;http://grails.org/<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Licensed&nbsp;under&nbsp;Apache&nbsp;Standard&nbsp;License&nbsp;</span><span style="color: #000000">2.0</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Grails&nbsp;home&nbsp;is&nbsp;set&nbsp;to:&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Base&nbsp;Directory:&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Note:&nbsp;No&nbsp;plugin&nbsp;scripts&nbsp;found<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Running&nbsp;script&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\scripts\RunApp.groovy<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Environment&nbsp;set&nbsp;to&nbsp;development<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">groovyc</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Compiling&nbsp;</span><span style="color: #000000">7</span><span style="color: #000000">&nbsp;source&nbsp;files&nbsp;to&nbsp;C:\Documents&nbsp;and&nbsp;Settings\Administrator\.grails\</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\projects\hello\classes<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">native2ascii</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Converting&nbsp;</span><span style="color: #000000">11</span><span style="color: #000000">&nbsp;files&nbsp;from&nbsp;E:\Groovy\projects\hello\grails-app\i18n&nbsp;to&nbsp;C:\Documents&nbsp;and&nbsp;Settings\Administrator\.grails\</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\projects\hello\resources\grails-app\i18n<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;C:\Documents&nbsp;and&nbsp;Settings\Administrator\.grails\</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\projects\hello\classes<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;C:\Documents&nbsp;and&nbsp;Settings\Administrator\.grails\</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\projects\hello\resources<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;C:\Documents&nbsp;and&nbsp;Settings\Administrator\.grails\</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\projects\hello<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Running&nbsp;Grails&nbsp;application..<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">01.183</span><span style="color: #000000">::INFO:&nbsp;&nbsp;Logging&nbsp;to&nbsp;STDERR&nbsp;via&nbsp;org.mortbay.log.StdErrLog<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">01.402</span><span style="color: #000000">::INFO:&nbsp;&nbsp;jetty-</span><span style="color: #000000">6.1.12</span><span style="color: #000000"><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">02.652</span><span style="color: #000000">::INFO:&nbsp;&nbsp;No&nbsp;Transaction&nbsp;manager&nbsp;found&nbsp;-&nbsp;if&nbsp;your&nbsp;webapp&nbsp;requires&nbsp;one</span><span style="color: #000000">,</span><span style="color: #000000">&nbsp;please&nbsp;configure&nbsp;one.<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">02.308</span><span style="color: #000000">:/hello:INFO:&nbsp;&nbsp;Set&nbsp;web&nbsp;app&nbsp;root&nbsp;system&nbsp;property:&nbsp;'hello-development-</span><span style="color: #000000">0.1</span><span style="color: #000000">'&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">E:\Groovy\projects\hello\web-app</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000"><br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">02.308</span><span style="color: #000000">:/hello:INFO:&nbsp;&nbsp;Initializing&nbsp;log4j&nbsp;from&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">file:C:\Documents&nbsp;and&nbsp;Settings\Administrator/.grails/1.0.4/projects/hello/resources/log4j.properties</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000"><br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">02.340</span><span style="color: #000000">:/hello:INFO:&nbsp;&nbsp;Initializing&nbsp;Spring&nbsp;root&nbsp;WebApplicationContext<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">0</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;spring.GrailsWebApplicationContext&nbsp;Refreshing&nbsp;org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@396c7:&nbsp;display&nbsp;name&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@396c7</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #008000">;</span><span style="color: #008000">&nbsp;startup&nbsp;date&nbsp;[Thu&nbsp;Mar&nbsp;12&nbsp;20:00:05&nbsp;CST&nbsp;2009];&nbsp;parent:&nbsp;org.springframework.web.context.support.XmlWebApplicationContext@1e7c609</span><span style="color: #008000"><br />
</span><span style="color: #008080">24</span><span style="color: #008000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">0</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;spring.GrailsWebApplicationContext&nbsp;Bean&nbsp;factory&nbsp;for&nbsp;application&nbsp;context&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@396c7</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">:&nbsp;org.springframework.beans.factory.support.DefaultListableBeanFactory@c4c05<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">08.179</span><span style="color: #000000">:/hello:INFO:&nbsp;&nbsp;Initializing&nbsp;Spring&nbsp;FrameworkServlet&nbsp;'grails'<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">2009</span><span style="color: #000000">-</span><span style="color: #000000">03</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">09.445</span><span style="color: #000000">::INFO:&nbsp;&nbsp;Started&nbsp;SelectChannelConnector@</span><span style="color: #000000">0.0.0.0</span><span style="color: #000000">:</span><span style="color: #000000">8080</span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />Server&nbsp;running.&nbsp;Browse&nbsp;to&nbsp;http://localhost:</span><span style="color: #000000">8080</span><span style="color: #000000">/hello</span></div>
打开浏览器，输入<a href="http://localhost:8080/hello/hello/index">http://localhost:8080/hello/hello/index</a> 查看运行结果<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/bobojava/1123.JPG" /><br />
地址栏中，第一个hello为项目名，第二hello为控制器名，index为操作名。<br />
<br />
最基本的一个入门程序写完了，除了手工编写外，我们还可以使用NetBeans作为开发IDE，大大简化开发流程。至少不用记那么多命令了哈！<br />
<img style="width: 880.29px; height: 528.42px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/bobojava/031211.JPG" width="880" height="528" /><br />
<img src ="http://www.blogjava.net/bobojava/aggbug/259394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bobojava/" target="_blank">Rique</a> 2009-03-12 18:12 <a href="http://www.blogjava.net/bobojava/articles/259394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Grails入门之一： 环境配置及简单命令介绍</title><link>http://www.blogjava.net/bobojava/articles/258752.html</link><dc:creator>Rique</dc:creator><author>Rique</author><pubDate>Tue, 10 Mar 2009 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/bobojava/articles/258752.html</guid><wfw:comment>http://www.blogjava.net/bobojava/comments/258752.html</wfw:comment><comments>http://www.blogjava.net/bobojava/articles/258752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bobojava/comments/commentRss/258752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bobojava/services/trackbacks/258752.html</trackback:ping><description><![CDATA[<p>首先，让我们来搭建起开发Grails的环境。在Windows平台下，他的配置和Java的环境十分相似，那我们一步一步开始吧！<br />
一、下载最新的发布版本：<a href="http://www.grails.org">http://www.grails.org</a>.解压后备用。本人把解压后的文件置于Grooy目录下。（以后的开发都在Groovy目录下完成，最好再建个目录projects）<br />
二、设置GRAILS_HOME环境变量，类似于Java环境变量，找到解压后的根目录，如:E:\Groovy\grails-1.0.4&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/bobojava/1.JPG" width="344" height="137" /><br />
三、将GRAILS_HOME加入到PATH中，%GRAILS_HOME%/bin<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/bobojava/2.JPG" /><br />
OK，现在测试一下，命令行下输入grails，如图：<br />
<img style="width: 744px; height: 113px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/bobojava/3.JPG" width="744" height="113" /><br />
<br />
<br />
好了，准备工作就绪，让我们开始介绍几个简单的命令吧！<br />
<br />
命令行下输入grails help，先来看看grails的基本命令吧<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">C:\&gt;grails&nbsp;help<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Welcome&nbsp;to&nbsp;Grails&nbsp;</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;-&nbsp;http://grails.org/<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Licensed&nbsp;under&nbsp;Apache&nbsp;Standard&nbsp;License&nbsp;</span><span style="color: #000000">2.0</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Grails&nbsp;home&nbsp;is&nbsp;set&nbsp;to:&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Base&nbsp;Directory:&nbsp;C:\<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Note:&nbsp;No&nbsp;plugin&nbsp;scripts&nbsp;found<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Running&nbsp;script&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\scripts\Help.groovy<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Environment&nbsp;set&nbsp;to&nbsp;development<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Usage&nbsp;(optionals&nbsp;marked&nbsp;with&nbsp;*):&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grails&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">environment</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">*&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">target</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">arguments</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">*<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Examples:&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grails&nbsp;dev&nbsp;run-app&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grails&nbsp;create-app&nbsp;books<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Available&nbsp;Targets&nbsp;(type&nbsp;grails&nbsp;help&nbsp;'target-name'&nbsp;for&nbsp;more&nbsp;info):<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;bootstrap<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;bug-report<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;clean<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;compile<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;console<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-app<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-controller<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-domain-class<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-filters<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-integration-test<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-plugin<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-script<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-service<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-tag-lib<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;create-unit-test<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;doc<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;generate-all<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;generate-controller<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;generate-views<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;help<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;init<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;install-plugin<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;install-templates<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;list-plugins<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;package<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;package-plugin<br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;plugin-info<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;release-plugin<br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;run-app<br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;run-app-https<br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;run-war<br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;set-proxy<br />
</span><span style="color: #008080">52</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;set-version<br />
</span><span style="color: #008080">53</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;shell<br />
</span><span style="color: #008080">54</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;stats<br />
</span><span style="color: #008080">55</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;test-app<br />
</span><span style="color: #008080">56</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;upgrade<br />
</span><span style="color: #008080">57</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />grails&nbsp;war</span></div>
前面是命令格式介绍，后面从20-57行总共38条命令，在应用中会逐一介绍。<br />
其中，应用创建命令grails create-app最为常用，它会为我们创建一个标准的规范化的grails应用框架目录。如图，<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">E:\Groovy\projects&gt;grails&nbsp;create-app&nbsp;hello<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Welcome&nbsp;to&nbsp;Grails&nbsp;</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;-&nbsp;http://grails.org/<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Licensed&nbsp;under&nbsp;Apache&nbsp;Standard&nbsp;License&nbsp;</span><span style="color: #000000">2.0</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Grails&nbsp;home&nbsp;is&nbsp;set&nbsp;to:&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Base&nbsp;Directory:&nbsp;E:\Groovy\projects<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Note:&nbsp;No&nbsp;plugin&nbsp;scripts&nbsp;found<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Running&nbsp;script&nbsp;E:\Groovy\grails-</span><span style="color: #000000">1.0.4</span><span style="color: #000000">\scripts\CreateApp.groovy<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Environment&nbsp;set&nbsp;to&nbsp;development<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\src<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\src\java<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\src\groovy<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\controllers<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\services<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\domain<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\taglib<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\utils<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\views<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\views\layouts<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\i18n<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\conf<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\test<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\test\unit<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\test\integration<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\scripts<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\web-app<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\web-app\js<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\web-app\css<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\web-app\images<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\web-app\META-INF<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\lib<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\conf\spring<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">mkdir</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Created&nbsp;dir:&nbsp;E:\Groovy\projects\hello\grails-app\conf\hibernate<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">propertyfile</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Creating&nbsp;new&nbsp;property&nbsp;file:&nbsp;E:\Groovy\projects\hello\application.properties<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;files&nbsp;to&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copied&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;empty&nbsp;directory&nbsp;to&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;empty&nbsp;directory&nbsp;under&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;files&nbsp;to&nbsp;E:\Groovy\projects\hello\web-app\WEB-INF<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;files&nbsp;to&nbsp;E:\Groovy\projects\hello\web-app\WEB-INF\tld<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">28</span><span style="color: #000000">&nbsp;files&nbsp;to&nbsp;E:\Groovy\projects\hello\web-app<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">18</span><span style="color: #000000">&nbsp;files&nbsp;to&nbsp;E:\Groovy\projects\hello\grails-app<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">copy</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Copying&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;file&nbsp;to&nbsp;E:\Groovy\projects\hello<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">propertyfile</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">&nbsp;Updating&nbsp;property&nbsp;file:&nbsp;E:\Groovy\projects\hello\application.properties<br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Created&nbsp;Grails&nbsp;Application&nbsp;at&nbsp;E:\Groovy\projects/hello</span></div>
<br />
Hello是我们创建的第一个grails应用，grails自动为我们创建必要的目录结构。<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/bobojava/4-1.JPG" width="206" height="221" /><br />
下节我们将基于这个目录结构，进行第一个入门的HelloWorld应用开发。<br />
<img src ="http://www.blogjava.net/bobojava/aggbug/258752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bobojava/" target="_blank">Rique</a> 2009-03-10 11:19 <a href="http://www.blogjava.net/bobojava/articles/258752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>