让Grails不从连字符的应用程序名称创建包

让Grails不从连字符的应用程序名称创建包,grails,packages,hyphenation,Grails,Packages,Hyphenation,如果我创建一个名为a-b-c-d的Grails应用程序,执行Grails create domain class User将导致Grails在子目录Grails app/domain/a/b/c/d中创建一个class User,并将其命名为包a.b.c.d。如何防止Grails创建这些包名?我不知道,这听起来像是个bug。有两个明显的解决办法 将应用程序更改为名称不带破折号 不要使用Grails命令create domain class,create controller class,等等。

如果我创建一个名为a-b-c-d的Grails应用程序,执行
Grails create domain class User
将导致Grails在子目录Grails app/domain/a/b/c/d中创建一个class User,并将其命名为包a.b.c.d。如何防止Grails创建这些包名?

我不知道,这听起来像是个bug。有两个明显的解决办法

  • 将应用程序更改为名称不带破折号
  • 不要使用Grails命令
    create domain class
    create controller class
    ,等等。我从不使用这些命令,因为它们除了创建类(以及相应的空测试类)之外,实际上什么都不做。就我个人而言,我发现自己创建类比运行Grails命令更容易

您可以在调用cli命令时指定程序包

grails create-domain-class your.package.name.User

您肯定应该使用包,但是您可以通过更改Config.groovy中的
grails.project.groupId
值来定制默认包。默认值是
appName
,这是您的应用程序名,但您可以将其更改为任何值包,例如
'com.foo.bar'

此外,您可以在运行创建脚本时指定包,如果确实要在默认包中创建类,则可以使用以下语法:

grails create-service .Person
而且它不会使用软件包