有没有办法替换运行grails create-app时生成/复制的Grails默认Config.groovy,BuildConfig.groovy,DataSource.groovy等配置文件?我有几个应用程序都使用相同或非常相似的配置,因此我在开始新的时候最终会进行大量的复制和粘贴。
我研究过使用可能有用的外部配置文件,但我也想替换spring / resources.groovy以及一些视图和css / js / images文件,这些文件也是不可能的。这样做了。
我在$ GRAILS_HOME / src中看到了这些文件的位置,但直接更改这些文件并不影响create-app(我假设我需要重建grails才能生效)。
谢谢!
答案 0 :(得分:5)
有一种方法,但它有点牵扯,完全没有记录,所以这将是我们的小秘密。
create-app
和create-plugin
脚本实际上非常简单。他们创建一个新的空目录并从GRAILS_HOME/grails-resources-<version>.jar
中提取包含各种项目文件的jar文件,然后将它们解压缩到项目目录中。然后运行integrate-with --eclipse
以创建GGTS的IDE文件,并运行create-app
wrapper
脚本以创建grailsw
等,除非您使用--skip-wrapper
标志
在2.3.0开发结束时,我在这些罐子的自定义版本的脚本中添加了一个检查,如果找到一个或多个,则使用它们而不是库存罐子。要使用此功能,请在名为$HOME/.grails/<version>
的{{1}}中创建一个文件夹。因此对于Grails 2.4.3来说,app-templates
。为了避免意外删除这个目录,我实际上创建了一个符号链接,该符号链接指向一个单独的目录(例如$HOME/.grails/2.4.3/app-templates
,但这是可选的。你也可以使用符号链接来共享一组覆盖适用于Grails的多个版本的罐子。
解压缩ln -s /path/to/app-templates.2.4.3 ~/.grails/2.4.3/app-templates
,您将拥有5个jar文件:$GRAILS_HOME/dist/grails-resources-2.4.3.jar
(特定于应用的文件),grails-app-files.jar
(grails-integration-files.jar
脚本的文件,例如Eclipse项目文件,IDEA项目文件等),integrate-with
(特定于插件的文件)和grails-plugin-files.jar
(应用程序和插件使用的文件)。此外,您还有一个grails-shared-files.jar
,但这并不是您通常想要自定义的内容。
解压缩4个jar文件中的每一个并进行所需的任何更改。我倾向于做的一些更改是从conf文件中删除大量注释,将grails-wrapper-support.jar
从共享jar移到app jar,因为插件中很少需要,移动URLMappings.groovy
从共享jar到app和plugin jar,并删除大部分将在插件中使用的jar,以及一些其他更改。您可以删除文件,在罐子之间移动它们,并根据需要添加新文件。