如何在启动时禁用grails加载默认加载的某些插件?

时间:2012-12-10 19:09:10

标签: grails plugins war

我不知道grails在启动时会加载一组默认插件。使用run-app在开发模式下运行时,这并不明显。但是当我构建一个战争并将其放入应用服务器时,内存使用率变得非常高,我看到以下几段日志:

31767 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [i18n] with version [2.1.0] loaded successfully 31770 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [logging] with version [2.1.0] loaded successfully 31771 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [core] with version [2.1.0] loaded successfully 32039 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [groovyPages] with version [2.1.0] loaded successfully 32053 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [urlMappings] with version [2.1.0] loaded successfully 32060 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [controllers] with version [2.1.0] loaded successfully 32076 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [domainClass] with version [2.1.0] loaded successfully 32079 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [dataSource] with version [2.1.0] loaded successfully 32547 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [cacheHeaders] with version [1.1.5] loaded successfully 32548 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [redis] with version [1.3.2] loaded successfully 32549 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [resources] with version [1.1.6] loaded successfully 32549 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [services] with version [2.1.0] loaded successfully 32551 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [servlets] with version [2.1.0] loaded successfully 32561 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [mimeTypes] with version [2.1.0] loaded successfully 32571 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [codecs] with version [2.1.0] loaded successfully 32579 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [filters] with version [2.1.0] loaded successfully 32579 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [validation] with version [2.1.0] loaded successfully 32583 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [scaffolding] with version [2.1.0] loaded successfully 32598 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [converters] with version [2.1.0] loaded successfully 32664 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [lesscssResources] with version [1.3.0] loaded successfully 32676 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [cachedResources] with version [1.0] loaded successfully 32684 [main] INFO org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager - Grails plug-in [zippedResources] with version [1.0] loaded successfully

如何禁用某些插件的加载,因为我不需要它们?比如,脚手架插件和domainClass插件(这是一个没有数据库连接的HTML 5应用程序)

谢谢!

2 个答案:

答案 0 :(得分:1)

因此,在通过另一种沟通媒介跟进后,我已确认您要删除:

  1. domainClass
  2. 数据源
  3. 验证
  4. 脚手架
  5. 让我们从dataSource开始。根据{{​​3}}和this thread,可以简单地删除DataSource.groovy(或删除dataSource {}的内容)以防止插件触发,但Grails项目负责人{{3}即使您没有Web服务之外的持久层,您仍然需要一个内存数据源,以使应用程序正常运行。或者至少通过测试。

    据我所知,删除不需要的插件的唯一方法是使用grails.war.resources回调(即,没有办法使用Grail的内置依赖管理功能来处理它)。请关注this follow-up JIRA以获取如何使用回调删除任意jar的示例。

答案 1 :(得分:0)

这些插件应该在您的application.properties或BuildConfig.groovy中,具体取决于您设置插件的方式。其中一些插件可能与您安装的插件有关。

看起来您拥有资源插件以及一些插件来帮助处理资源。 (Zipped,cached,lesscss,cacheHeaders ......)你可能想要所有这些插件。

你也有redis你看到你没有在生产中使用的插件吗?如果你是这样你总是可以在插件闭包的BuildConfig中有条件地加载它们,我们会做以下事情:

if (Environment.current in [Environment.DEVELOPMENT, Environment.TEST]) {
  compile ":build-test-data:2.0.2"
}

你可能需要那些你看到的插件,因为它们可能被内置到grails中。 grails的基础是一个相当大的内存占用。您可以有条件地添加所需的插件,但不能丢弃所有插件。