在构建战争时删除插件视图(gsp)

时间:2012-04-16 02:49:45

标签: grails war custom-build

我们在grails应用程序中使用各种插件(如日志记录,spring security core,ui,acl等等)。现在这些插件带有默认的gsps(在每个插件的views文件夹中)。

我想构建一个WAR而不包含任何插件的视图。因此,当战争立即构建时,它会创建包含视图文件夹的plugins文件夹,默认情况下这些视图带有插件,这些视图引入了很多漏洞,所以我想排除插件视图。

我现在正在BuildConfig.groovy中尝试这个,如下所示:

grails.project.dependency.resolution = {
grails.war.resources = { stagingDir ->
   println "Customized delete started..."
   delete{fileset dir: "${stagingDir}/WEB-INF/plugins/logging-0.1/grails-app/views/"}
   delete{fileset dir: "${stagingDir}/WEB-INF/plugins/spring-security-ui-0.1.2/grails-app/views/"}
    }
   }

但问题是代码在战争构建过程尚未创建时尝试删除视图。因此,我发现这些插件视图没有找到文件错误。

我应该在哪里编写代码来删除插件视图,以便它们在构建WAR时已经创建并可以删除,或者我如何不在WAR中包含插件视图?

提前致谢.. Priyank

1 个答案:

答案 0 :(得分:2)

我在Grails邮件列表上回答了这个问题。 http://grails.1312388.n4.nabble.com/deleting-plugins-views-gsp-when-building-the-war-td4560517.html (答案还没有出现在讨论中)

您可以在eventCreateWarStart中从/向war文件中删除/添加文件 在scripts / _Events.groovy文件中指定的事件。

这可能有效:

filename:scripts / _Events.groovy

eventCreateWarStart = { warName, stagingDir ->
   Ant.delete(dir: "${stagingDir}/WEB-INF/plugins/logging-0.1/grails-app/views")
   Ant.delete(dir: "${stagingDir}/WEB-INF/classes", includes:"gsp_logging*.*")
   Ant.delete(dir: "${stagingDir}/WEB-INF/plugins/spring-security-ui-0.1.2/grails-app/views")
   Ant.delete(dir: "${stagingDir}/WEB-INF/classes", includes:"gsp_springSecurityUi*.*")
}

我不确定你是否也可以毫无问题地删除插件控制器类。我们使用Filter类来“禁用”插件提供的控制器。

作为附注,您可以使用尚未记录的“grails.plugins.excludes”功能禁用生产环境中的“仅限开发”插件:

实施例: 在Config.groovy中:

import grails.util.Environment

if(Environment.current == Environment.PRODUCTION) {
    grails.plugin.excludes = ['somePluginName']
}