2016-05-12 62 views
1

我正在使用Java開發框架來開發Web應用程序。我想在運行時讀取文件,並且該文件已包含在項目的文件夾中。但在生產環境中,該文件夾不可用。有沒有辦法在運行時使文件夾可用?特別是,有沒有一種默認方法可以處理這種情況?是否有默認的方法來讀取即使在生產環境中也能正常工作的文件?

我經歷了一個問題「如何在Play Framework 2.2.1中讀取文件?1」但是在生產環境中沒有提到這個問題。

回答

7

對於某些特定任務,您可以選擇一個您偏好的位置,而不是專用文件夾。例如,您可以創建/資源文件夾。請勿在/ 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內的額外文件夾「資源」。那麼它也適用於生產環境。

+0

謝謝Supun。這完全解決了我的問題。 –

相關問題