正如 James 所提到的,Play 的静态资源控制器将文件从类路径中拉出。您还可以定义应用程序外部的类路径。
您可以通过在构建文件中定义以下行来做到这一点。
val assetDir = sys.props.get("java.io.tmpdir").get + "/outside-cp"
val main = play.Project(appName, appVersion, appDependencies).settings(
unmanagedClasspath in Runtime += file(assetDir),
unmanagedClasspath in Compile += file(assetDir),
unmanagedClasspath in Test += file(assetDir)
)
现在创建以下目录:
/tmp/outside-cp/assets
最后,为您的外部资产创建一条路线:
GET /outside/*file controllers.Assets.at(path="/assets", file)
启动您的应用程序并在资产目录中放置一个文件。现在您可以通过以下 URL 访问该文件:
http://localhost:9000/outside/your-placed.file
注意:您不能直接将资产目录用作类路径,因为 Play 的资产控制器会自动为给定文件添加路径前缀。并且定义空路径不起作用。
如果您运行play stage
以打包您的应用程序,那么您必须更改您的启动脚本以将类路径添加到您的应用程序。