如何在Grails应用程序中添加资源文件?

问题描述:

我使用的Grails 2.4.3和我的项目,我需要在/src/java/com/company/MyClass.java如何在Grails应用程序中添加资源文件?

从一个.java加载资源文件,我想下面的代码:

ClassLoader.getSystemResourceAsStream("myfile.txt") 

我试图把文件放到项目中的任何地方,但似乎没有找到它。

它在编译期间将文件放入目标/类时起作用。但它不可行(我不能在每次部署时都这样做)

如何在grails应用程序中声明资源以用于Java代码?

+0

它是什么类型的文件,你想用它做什么?通常网络资源存储在'/ web-app' – 2014-08-27 12:36:42

+0

这只是一个包含一些数据的文件。这不是一个网络资源。在Maven中,我们可以在pom.xml中声明资源文件夹。我如何用Grails或Java来做到这一点? – morgan 2014-08-27 13:23:47

对于类路径资源没有专用的资源目录,但源资源包含在源目录中。

例如,您可以将您的资源放在grails-app/confsrc/java的子目录中(最好是子目录)。

您可能会遇到与系统类加载器(谁知道是什么类加载器魔术在web应用中正在发生的事情)加载这些问题,但下面为我工作得很好:

def myFileContents = getClass().getResource('/mydir/myfile.txt').text 

最后要注意的,如果该文件是java或groovy文件,并且您不希望它编译(前一段时间我遇到了这种情况),那么您可以选择将其直接包含在正确的Web应用程序目录中:​​

+0

在什么情况下想要包含Java或Groovy文件而不编译它? – 2014-08-27 23:40:47

+0

@Dónal:有几种情况。在我的情况下,它是一个配置文件,我用ConfigSlurper读取。也可以是脚本或模板。我还遇到了一个应该包含java代码示例作为资源的实例。 – Steinar 2014-08-28 06:42:36