【问题标题】:How do I disable grails from loading certain plugins loaded by default when starting up?如何在启动时禁用 grails 加载默认加载的某些插件?
【发布时间】:2012-12-10 19:09:09
【问题描述】:

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

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

我如何禁用某些插件的加载,因为我不需要它们?比如说,scaffold 插件和 domainClass 插件(这是一个没有 DB 连接的 HTML 5 应用)

谢谢!

【问题讨论】:

    标签: grails plugins war


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的。这些插件是 grails 内部的,将它们从战争中删除的唯一方法是添加闭包 grails.war.resources。在 BuildConfig.groovy 中并手动删除文件
    【解决方案2】:

    这些插件应该在您的 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 的基础是相当大的内存占用。你可以有条件地添加你需要的插件,但你不能什么都折腾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多