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

Vid*_*ige 1 java deployment file production-environment playframework

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

我经历了一个问题"如何在Play Framework 2.2.1中读取文件?1 "但是没有提到生产环境中的问题.

Sup*_*hne 9

对于某些特定任务,您可以选择除专用文件夹之外的其他位置.例如,您可以创建/ resources文件夹.不要在/ app文件夹中创建任何资源文件夹,因为它只是存储代码的位置.与其他特定文件夹相同.然后你可以使用

import play.Play; 
    Play.application().getFile("relative_path_from_<Project_Root>);
Run Code Online (Sandbox Code Playgroud)

访问代码中的文件.

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

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

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