是否有默认方法来读取播放中的文件,即使在生产环境中也能正常工作?

Is there a default method to read a file in play which works even in the production environment?

我正在使用带有 java 的播放框架来开发 Web 应用程序。我想在 运行 时间读取一个文件,并且该文件已包含在项目的文件夹中。但是在生产环境中该文件夹不可用。有没有办法让文件夹在 运行 时间可用?特别是,是否有默认方法来处理这种情况?

问题我已经解决了"How to read a file in Play Framework 2.2.1?1"但是没有提到生产环境的问题。

您可以选择一个您喜欢的位置,而不是在用于某些特定任务的专用文件夹中。例如,您可以创建 /resources 文件夹。不要在 /app 文件夹中创建任何资源文件夹,因为它只是存储代码的位置。其他特定文件夹也是如此。然后你可以使用

import play.Play; 
    Play.application().getFile("relative_path_from_<Project_Root>);

访问代码中的文件。

只有这样,才能在开发环境中完美运行。但是一旦你使用 dist 文件将其投入生产,它就不会工作,因为你放置的整个资源文件夹都不会添加到 dist 中。为此,您必须明确要求 play 将 /resources 文件夹也添加到您的 dist 中。为此,您要做的就是转到 /build.sbt 并添加这些行

import com.typesafe.sbt.packager.MappingsHelper._
    mappings in Universal ++= directory(baseDirectory.value / "resources")

现在如果你拿走并检查你的 dist,你可以看到它在 dist 中有一个额外的文件夹 'resources'。然后它也适用于生产环境。