最近在学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. 5.spark弹性分布式数据集

    弹性分布式数据集 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark弹性分布式数据集 ...

  2. 从零自学Hadoop(24):Impala相关操作上

    阅读目录 序 数据库相关 表相关 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  3. ReactiveCocoa有关集合类的使用

    Sequences 集合  表示一个不可变的序列值且不能包含空值, 1.实现NSArray的快速遍历 NSArray *numbers = @[@1, @2, @3, @4, @5, @6]; //通 ...

  4. 使用gitLab 或 github 关联本地仓库

    要先在git里面注册自己的邮箱 然后: git commit -m 是为本次提交命名 刷新gitLab 发现更新了

  5. tomcat 与 java web中url路径的配置以及使用规则详情(长期更新)

    首先我们看一下在myeclipse中建立的java web项目的结构 在这里我们需要注意这个webroot也就是我们在tomcat里的webapp里面的应用 之所以每一个项目都有这个webroot,是 ...

  6. CSS样式----浮动(图文详解)

    标准文档流 宏观地讲,我们的web页面和photoshop等设计软件有本质的区别:web页面的制作,是个"流",必须从上而下,像"织毛衣".而设计软件,想往哪里 ...

  7. swift3.0 点击UIScrollView中输入框之外的区域关闭键盘

    通过点击事件实现关闭键盘 scrollView: UIScrollView! title_textField: UITextField! let hideKeyboardTapGesture = UI ...

  8. 照着官方文档学习react

    笨人学习法 10000个小时策略来学习,因为笨.先照着官方文档敲一遍,写一遍. 准备 先要准备环境.搭建一个基于webpack的react环境:Hello ReactJS. demo: https:/ ...

  9. WebGIS中前端JS生成等值面方法探讨

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在之前的博文<WebGIS中等值面展示的相关方案简析&g ...

  10. java中构造方法及其作用

    构造方法作用就是对类进行初始化. 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法,如:class a {}//没有任何构造函数. 构 ...