【问题标题】:How can I add a resource file in Grails application?如何在 Grails 应用程序中添加资源文件?
【发布时间】:2014-08-27 12:15:05
【问题描述】:

我正在使用 Grails 2.4.3,对于我的项目,我需要从 /src/java/com/company/MyClass.java 中的 .java 加载资源文件

我尝试了以下代码:

 ClassLoader.getSystemResourceAsStream("myfile.txt")

我试图将文件放在项目中的任何位置,但似乎找不到。

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

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

【问题讨论】:

  • 它是什么样的文件,你想用它做什么?通常网络资源存储在'/web-app'下
  • 它只是一个包含一些数据的文件。它不是网络资源。在 Maven 中,我们可以在 pom.xml 中声明资源文件夹。如何使用 Grails 或 Java 做到这一点?

标签: java grails resources


【解决方案1】:

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

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

您可能会在使用系统类加载器加载它们时遇到问题(谁知道 Web 应用程序中正在发生什么类加载器魔法),但以下对我来说很好:

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

最后一点,如果文件是 java 或 groovy 文件,并且您不希望它编译(我前段时间遇到过这种情况),那么您可以选择将其直接包含在正确的网络中应用目录:web-app/WEB-INF/classes/mydir/myfile.groovy

【讨论】:

  • 在什么情况下希望在不编译的情况下包含 Java 或 Groovy 文件?
  • @Dónal:有几种情况。就我而言,这是我使用 ConfigSlurper 读取的配置文件。也可以是脚本或模板。我还遇到了一个实例,其中 java 示例代码应作为资源包含在内。
猜你喜欢
  • 2013-02-03
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2016-08-09
  • 2017-10-06
  • 1970-01-01
相关资源
最近更新 更多