3

我不知道 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 插件(这是一个没有 DB 连接的 HTML 5 应用程序)

谢谢 !

4

2 回答 2

1

因此,在通过另一种沟通方式与您联系后,我确认您希望删除:

  1. 域类
  2. 数据源
  3. 验证
  4. 脚手架

让我们从数据源开始。根据这个线程这个后续 JIRA,可以简单地删除 DataSource.groovy (或删除 dataSource {} 的内容)以防止插件触发,但 Grails 项目负责人Graeme Rocher甚至表示如果您在 Web 服务之外没有持久层,您仍然需要一个内存数据源才能使应用程序正常运行。或者至少通过测试。

据我所知,删除不需要的插件的唯一方法是使用 grails.war.resources 回调(即,无法使用 Grail 内置的依赖管理功能来处理它)。按照此链接获取有关如何使用回调删除任意 jar 的示例。

于 2012-12-11T00:02:37.453 回答
0

这些插件应该在您的 application.properties 或 BuildConfig.groovy 中,具体取决于您如何设置插件。其中一些插件可能是您安装的插件的依赖项。

看起来你有资源插件以及一些插件来帮助一般的资源。(压缩、缓存、lesscss、cacheHeaders ...)您可能想要所有这些插件。

你也有 redis 你看到你没有在生产中使用的插件吗?如果你是,你总是可以有条件地在 BuildConfig 中的 plugins 闭包中加载它们,我们执行以下操作:

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

您可能需要您看到的那些插件,因为它们可能内置在 grails 中。grails 的基础是相当大的内存占用。您可以有条件地添加您需要的插件,但您不能折腾所有东西。

于 2012-12-10T23:29:03.373 回答