grails中特定于环境的web.xml?
Posted
技术标签:
【中文标题】grails中特定于环境的web.xml?【英文标题】:Environment-specific web.xml in grails? 【发布时间】:2011-08-18 20:10:06 【问题描述】:在 grails 中构建特定环境的 web.xml
条目的最佳方法是什么?
我只需要对生产进行某些修改,因为它们会破坏本地运行。
有什么想法吗?
【问题讨论】:
【参考方案1】:您可以使用“WebXmlEnd”事件的事件处理程序创建scripts/_Events.groovy
,一旦 Grails 和插件完成更改,就会触发该事件。使用普通搜索/替换或通过解析 XML 的 DOM 方法更新 XML 并写出更新的文件:
import grails.util.Environment
eventWebXmlEnd = String filename ->
if (Environment.current != Environment.PRODUCTION)
return
String content = webXmlFile.text
// update the XML
content = ...
webXmlFile.withWriter file -> file << content
【讨论】:
【参考方案2】:这是我正在使用的解决方案,来自 death-head.ch 的那个人
首先安装模板
grails install-templates
然后自定义web.xml
,您将在src/templates/war/web.xml
中找到。我选择制作web_dev.xml
和web_prod.xml
并删除web.xml
。我希望web_prod.xml
包含一个安全约束块。反正...
将以下内容放入BuildConfig.groovy
:
// #########################################################
// ## Can't use environment switching block because BuildConfig doesn't support it.
// ## @url http://jira.grails.org/browse/GRAILS-4260
// ## So use this workaround:
// ## @url http://death-head.ch/blog/2010/09/finally-solved-the-base-authentication-in-grails/
// #########################################################
switch ("$System.getProperty('grails.env')")
case "development":
if (new File("/$basedir/src/templates/war/web_dev.xml").exists())
grails.config.base.webXml = "file:$basedir/src/templates/war/web_dev.xml"
break;
default:
if (new File("/$basedir/src/templates/war/web_prod.xml").exists())
grails.config.base.webXml = "file:$basedir/src/templates/war/web_prod.xml"
break;
祝你好运!
【讨论】:
这很好用。我没有使用"$System.getProperty('grails.env')"
,而是从 Grails 2.2.0 中的grails.util.Environment.getCurrent().getName()
阅读【参考方案3】:
我从未尝试过,但是应该可以根据当前环境在BuildConfig.groovy
中指定grails.config.base.webXml
参数。
有一个list of available BuildConfig settings here
编辑
实际上,due to this issue,这不是前进的方向 :-( 可能像这样传递属性:
grails -Dgrails.config.base.webXml=/path/to/web.xml
一切皆有可能吗?
【讨论】:
以上是关于grails中特定于环境的web.xml?的主要内容,如果未能解决你的问题,请参考以下文章
Webpack 中特定于页面的 JavaScript 以及第三方脚本和应用程序范围的脚本
我可以关闭 web.xml 中的 HttpSession 吗?
在没有插件 web.xml 问题的情况下配置 Spring Security
使用“gradle test”测试 Grails 3 应用程序使用错误的环境配置