我们在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
答案 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']
}