如何在Grails应用程序中添加资源文件?
我使用的Grails 2.4.3和我的项目,我需要在/src/java/com/company/MyClass.java如何在Grails应用程序中添加资源文件?
从一个.java加载资源文件,我想下面的代码:
ClassLoader.getSystemResourceAsStream("myfile.txt")
我试图把文件放到项目中的任何地方,但似乎没有找到它。
它在编译期间将文件放入目标/类时起作用。但它不可行(我不能在每次部署时都这样做)
如何在grails应用程序中声明资源以用于Java代码?
对于类路径资源没有专用的资源目录,但源资源包含在源目录中。
例如,您可以将您的资源放在grails-app/conf
或src/java
的子目录中(最好是子目录)。
您可能会遇到与系统类加载器(谁知道是什么类加载器魔术在web应用中正在发生的事情)加载这些问题,但下面为我工作得很好:
def myFileContents = getClass().getResource('/mydir/myfile.txt').text
最后要注意的,如果该文件是java或groovy文件,并且您不希望它编译(前一段时间我遇到了这种情况),那么您可以选择将其直接包含在正确的Web应用程序目录中:
在什么情况下想要包含Java或Groovy文件而不编译它? – 2014-08-27 23:40:47
@Dónal:有几种情况。在我的情况下,它是一个配置文件,我用ConfigSlurper读取。也可以是脚本或模板。我还遇到了一个应该包含java代码示例作为资源的实例。 – Steinar 2014-08-28 06:42:36
它是什么类型的文件,你想用它做什么?通常网络资源存储在'/ web-app' – 2014-08-27 12:36:42
这只是一个包含一些数据的文件。这不是一个网络资源。在Maven中,我们可以在pom.xml中声明资源文件夹。我如何用Grails或Java来做到这一点? – morgan 2014-08-27 13:23:47