Grails 1.1 部署 - WAR 文件

当涉及到它时, 目前的java基本设备都要求web应用程序被当做WAR文件部署,因此,这是目前为止最常见的方式Grails应用程序用于生产部署 .

创建WAR文件只需要简单的执行war 命令:grails war这里也有许多方式用于定制WAR文件的创建 .

例如, 你可以指定命令路径 (任何现对和绝对),这会指定在哪里放置文件和给定什么样的名字:grails war /opt/java/tomcat-5.5.24/foobar.war作为选择,你可以在grails-app/conf/BuildConfig.groovy添加一行来改变默认的位置和文件名 :grails.war.destFile = "foobar-prod.war"当然,任何命令行参数都优先于这个设置.

它也可以控制在WAR文件包含什么样的类库 , 例如,如果你需要在共享文件夹中避免类库冲突.

默认行为是包含所有Grails所需要的全部类库 ,添加的任何类库都被包含在 "lib"目录, 添加的任何类库都被包含在应用程序的"lib"目录.

作为默认行为的选择,通过使用Ant包含模式或闭包包含AntBuilder语法的任一种设置Config.groovy的grails.war.dependencies和grails.war.java5.dependencies属性来明确指定WAR文件所包含的完整的类库列表,闭包的调用来自Ant "copy"阶段,因此只有像 "fileset"的元素可以被包含,尽管每个项目都包含在模式列表中.

任何闭包或模式被分配给后面的属性被包含在增加的grails.war.dependencies只在你运行在JDK1.5或以上 .

注意这些问题: 假如任何Grails依赖的类库丢失,应用程序肯定会失败,这里有个示例包含了标准Grails依赖所需的小子集:def deps = [ "hibernate3.jar", "groovy-all-*.jar", "standard-${servletVersion}.jar", "jstl-${servletVersion}.jar", "oscache-*.jar", "commons-logging-*.jar", "sitemesh-*.jar", "spring-*.jar", "log4j-*.jar", "ognl-*.jar", "commons-*.jar", "xstream-1.2.1.jar", "xpp3_min-1.1.3.4.O.jar" ] grails.war.dependencies = { fileset(dir: "libs") { deps.each { pattern -> include(name: pattern) } } }这个示例只是为了说明属性的语法,假如你想在自己的应用程序中尝试使用它们,应用程序可能不会工作.

你可以在未打包的根目录的 "dependencies.txt"文件中找到Grails所需的依赖列表.

你也可以在产生WAR文件的"War.groovy"脚本中找到默认的依赖 - 查看"DEFAULT_DEPS" 和 “DEFAULT_J5_DEPS” 变量.

2个遗留的配置选项用于grails.war.copyToWebApp和grails.war.resources.

第一个允许你定制来自"web-app"目录的WAR文件包含什么. . 第2个允许你在WAR文件完全创建之前执行任何额外的数据处理.// This closure is passed the command line arguments used to start the // war process. grails.war.copyToWebApp = { args -> fileset(dir:"web-app") { include(name: "js/**") include(name: "css/**") include(name: "WEB-INF/**") } } // This closure is passed the location of the staging directory that // is zipped up to make the WAR file, and the command line arguments. // Here we override the standard web.xml with our own. grails.war.resources = { stagingDir, args -> copy(file: "grails-app/conf/custom-web.xml", tofile: "${stagingDir}/WEB-INF/web.xml") }