您正在收到正确的根文件夹。 start
命令的意义在于验证应用程序在生产中的运行方式。所以它构建应用程序,就像你将它推到prod时一样。然后“将其部署到prod” - 将其解包到target/universal/stage
文件夹并从该文件夹运行应用程序。因此target/universal/stage
是您正确的根文件夹。
采取立正 - 启动命令已过时:
[提醒]开始命令已被弃用,并将在游戏的 未来的版本中删除。
[警告]要在生产模式下运行Play,请改为运行 'stage',然后在 target/universal/stage/bin中执行生成的启动脚本。
[警告]要使用 生产模式测试您的应用程序,请运行'testProd'。
更新
您需要添加到build.sbt
下一个代码
mappings in Universal ++=
(baseDirectory.value/"usr" * "*" get) map
(x => x -> ("usr/" + x.getName))
这样说SBT你的 “USR” 文件夹添加到 “生产包”(第一阶段) 。采取以关注 - 它不会“链接”,这将很难usr
文件夹复制到target/universal/stage
所以你必须target/universal/stage/usr
那就是usr
副本只是在运行命令之前start
谢谢,这是我认为这是发生。那么你认为在'target/universal/stage'中包含我的'usr'文件夹而不是实际的根文件夹是一个好的解决方案吗? – danielz
我认为最好的解决方案是将文件放入数据库。如果你想使用文件系统 - 使用你喜欢的路径。你的问题是你想从prod模式获取以开发模式上传的文件,这是两种不同的服务器环境。 –
不幸的是,将文件放入数据库不是一个选项,我需要使用文件系统。是否有跨平台的方式来获取实际的根文件夹路径?我尝试过的每种方法都给了我'目标/通用/舞台',这从你的答案中是有道理的。但我正在寻找一种方法来获取项目的根路径,而无需对其进行硬编码。 – danielz