最近在学grails框架,因为其敏捷性让我非常喜欢,不过有点让人恼怒的是也许因为grails框架太新了,所以关于grails的书籍很少,而且市面上的书籍大部分都是2007或者2009年的,官方文档又都是英文的,原谅我英语太差了~参照这些书籍学习却使用官方提供的最新grails,难免会有很多不同,需要不断尝试才能解决问题!(解决办法在随笔最后,不想看过程的可直接拉到最后)

回归正题,如果你在看grails权威指南(07版),甚至09年的一些关于grails的书籍,都可能会发生一种情况:使用grails的generate-*(generate-all等,参照下图图一)会发现命令无效的情况(图二)

图一

图二

顺便提一下,对于初学者(包括我自己)在刚开始使用grails命令的时候直接输入:grails help,会发现命令列表中没有上述或者一些其他的命令,如下图所示:

图三

对比上图可以发现没有generate-*命令,这是怎么回事呢?其实也很简单,图二的所有命令都是针对一个grails工程的,而图一所示的命令还包括了针对工程中各项文件的命令,出现二者的区别就在于:使用grails命令时是否是在grails工程里面。

拿图说话吧,在windows的情况下直接调出cmd窗口是类似于这样的:

图四

并不会进入grails工程里面,比如我有个叫myFirst的grails工程,如果使用cd myFirst后,再使用grails help就会出现图一所示的命令行了。

回到generate-*命令出现无效情况中,我可以确保自己在domian文件夹中一定有个Hello,如图五:

图五

那么为什么会出现这种情况呢?毫无疑问generate-*是对的,我们看下图五中Hello这个domian的路径,是不是不直接在domian文件夹下而多了一层以工程名(全部小写)的文件夹?

所以generate-*自然在domain根目录下是找不到这个领域模型的,那么也许有人会问,如果我把Hello这个领域模型放到domain的根目录下是不是就可以了呢?

不妨一试,我把book(我换了一个,参照图五可以看到它是没有被generate-all执行过的)放到了domain的根目录下(注意地址栏):

图六

使用generate-all命令,会出现下面的情况:

图七

很抱歉,这样会报错。所以目前认为这是不可行的。

那么该怎么解决图二所展示的问题呢?我查阅了一些其他牛人的说法,大致为把:grails generate-all domain-class-name换为grails generate-all  projectName.domian-class。注意其中有个点,这个很重要。

我尝试了一下,使用grails generate-all  myFirst.Book(我建立了一个名称为myFirst的grails工程),结果如下:

图八

结果还是一样,难道大神的说法是错误的吗?回到图五,其实我们会发现,在domain下有个叫myfirst的文件夹,与工程名很类似,但显然和工程名不一样,我尝试把grails generate-all myFirst.Book改为grails generate-all myfirst.Book,结果如下:

图九

图十


成功了,综上所述,这种问题的解决办法应该是把grails generate-* domain-class-name改为grails generate-* (domain下相应的文件夹名称).domain-class-name。

还有点需要注意的是,domain-class-name必须要和生成的groovy类名一致,区分大小写。


Grails笔记二:grails 2.4.3版本下generate-*失效问题解析的更多相关文章

  1. Grails笔记一:windows8.1操作系统cmd下grails命令无效

    最近决定使用intellij idea工具来开发基于Grails框架的应用程序,,在安装好jdk 1.7以及配置好jdk和grails环境变量后进行grails测试,在win8.1的命令行窗口中输入以 ...

  2. 【工作笔记二】ASP.NET MVC框架下使用MVVM模式

    ASP.NET MVC框架下使用MVVM模式 原文:http://www.cnblogs.com/n-pei/archive/2011/07/21/2113022.html 对于asp.net mvc ...

  3. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  4. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  5. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  6. 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...

  7. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  8. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  9. DirectX11笔记(二)--Direct3D初始化1之基本概念

    原文:DirectX11笔记(二)--Direct3D初始化1之基本概念 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737/art ...

随机推荐

  1. 《深入理解Java虚拟机》虚拟机类加载机制

    上节学习回顾 上一节,我们深入到类文件去了解其结构细节,也大概对类文件的编写规则略知一二了,解析来我们就得学习这个类文件是如何被加载到Java虚拟机的,看看有什么引人入胜的奥秘. 本节学习重点 大部分 ...

  2. year:2017 month:7 day:18

    2017-07-18 JavaScript 1javascript的控制语句 (1) if语句 (2)if(){}else 语句 (3) if(){} else if(){ }语句 (4)switch ...

  3. python 中 list 的各项操作

    最近在学习 python 语言.大致学习了 python 的基础语法.觉得 python 在数据处理中的地位和它的 list 操作密不可分. 特学习了相关的基础操作并在这里做下笔记. ''' Pyth ...

  4. Autofac in webapi2

    安装包:Autofac.webapi2 注意: install-package autofac.webapi2 (注意:您的项目中如果使用的是webapi2,此处必须为webapi2而不是webapi ...

  5. Java获取指定时间的毫秒值的方法

    有以下两种方法获取指定时间的毫秒值: 1.Calendar类 先由getInstance获取Calendar对象,然后用clear方法将时间重置为(1970.1.1 00:00:00),接下来用set ...

  6. 调整ORACLE用户关闭密码有效期

    --调整ORACLE用户关闭密码有效期  ----------------------------------2013/11/12 在oracle中执行一下操作:1.查看用户的proifle是那个,一 ...

  7. 像VUE一样写微信小程序-深入研究wepy框架

    像VUE一样写微信小程序-深入研究wepy框架 微信小程序自发布到如今已经有半年多的时间了,凭借微信平台的强大影响力,越来越多企业加入小程序开发. 小程序于M页比相比,有以下优势: 1.小程序拥有更多 ...

  8. UnitOfWork知多少

    1. 引言 Maintains a list of objects affected by a business transaction and coordinates the writing out ...

  9. noip普及组2004 火星人

    火星人 描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类 ...

  10. 关于 Node.js 的认证方面的教程(很可能)是有误的

    原文地址:Your Node.js authentication tutorial is (probably) wrong 我搜索了大量关于 Node.js/Express.js 认证的教程.所有这些 ...