6

我正在使用 grails 2.1。

在为生产构建时,我需要排除一个插件。

这篇文章提到了向插件添加范围。我相信这需要编辑单独的插件描述符?

我想定义要在一个位置排除的插件。

我尝试将以下内容添加到 config.groovy:

environments {
    production {
    plugin.excludes='grails-melody'
    }
}

当我检查战争时,它仍然包含 WEB-INF/plugins 下的旋律文件夹。

我应该补充一点,大多数应用程序插件都在 application.properties 中指定,如下所示:

plugins.build-test-data=2.0.3
plugins.fixtures=1.1
plugins.geoip=0.2
plugins.grails-melody=1.12
etc...

如何排除生产版本的特定插件?

谢谢

4

4 回答 4

8

在您的 buildConfig.groovy 中,您可以定义一个不导出的插件:

plugins {
  compile(':theplugin:theversion') {
    export = false
  }
}
于 2013-01-24T12:48:34.790 回答
7

让我在戒指中给出一个答案。类似于@hitty5 的提议,但有一些更改(和错误修复)。

对我们来说,在开发环境中工作时排除一些页面速度插件很重要,因为我们希望看到完整的资源。另一方面,我们不想复制应该在块之间的每台机器上的插件(就像你必须在 @hitty5 的解决方案中一样)。

plugins {
    runtime ":hibernate:$grailsVersion"
    // ... some more plugins that I want in every environment

    if (Environment.getCurrent() in [Environment.PRODUCTION, Environment.TEST]) {
        // plugins, that I only want on the test and production servers
        println("BuildConfig: including page speed optimization plugins.")
        runtime ":zipped-resources:1.0"
        compile ":cache-headers:1.1.5"
        runtime ":cached-resources:1.0"
        runtime ":yui-minify-resources:0.1.5"
    }

    // ... and more plugins, if you like
    build ":tomcat:$grailsVersion"

}

希望这可以帮助。

一切顺利,fluxon

于 2013-05-31T11:29:03.983 回答
3

首先我推荐使用构建配置文件(BuildConfig.groovy)来解决你的插件依赖。在此文件中,您可以定义特定于 env 的块,例如:

if (environment == Environment.PRODUCTION){
    plugins {            
            compile ":<plugin>:<version>"
        }
    }
else {
        plugins {            
            compile ":<plugin>:<version>"
        }
}
于 2013-01-24T12:49:19.103 回答
3

在您的 BuildConfig.groovy 中,您可以定义一个不在特定环境中导出的插件:

    plugins {
      compile(':theplugin:theversion') {
         if (Environment.getCurrent() == Environment.PRODUCTION) {
            export = false
         }
      }
    }

记得添加

import grails.util.Environment

在 BuildConfig.groovy 的开头

于 2014-01-29T16:58:48.823 回答