我在tomcat(7.0.53)服务器上部署GRAILS应用程序(2.3.5),部署本身没有问题。当我单击测试控制器(使用src / data文件夹中的文件)时,出现此错误:
Error 500: Internal Server Error
URI
/schedulingAPI-0.1/tests
Class
java.io.FileNotFoundException
Message
/home/student/apache-tomcat-7.0.53/bin/src/data/room
我知道WAR会查看tomcat目录,而它应该查看WAR本身。我已经尝试在创建WAR之前将src / data文件夹(属性>添加类文件夹)添加到构建路径但是没有解决问题。
答案 0 :(得分:2)
Grails documentation on deployment谈到了这一点。您可以使用的两个配置选项是grails.war.copyToWebApp和grails.war.resources。第一个允许您从" web-app"自定义WAR文件中包含的文件。目录。第二个允许您在最终创建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")
}
在您的情况下,您可以考虑使用自定义grails.war.resources命令:
grails.war.resources = { stagingDir, args ->
copy(file: "src/bin/**",
tofile: "${stagingDir}/bin")
}
所有这些当然取决于您打算将其他资源打包的路径。
更新在AntBuilder
的更高版本中包含多个文件,首选方法是使用fileset
代替**
表示法:
grails.war.resources = { stagingDir, args ->
copy(todir: "${stagingDir}/bin") {
fileset(dir: "src/bin")
}
}