我是Play框架& SBT新手。在Play類路徑中添加外部文件夾
在我的Play for Java項目中,在其中一個類中,我需要使用ResourceBundle.getBundle()在我的Play應用程序之外讀取屬性文件。
我已經能夠做到這一點在「播放控制檯」模式加入我的build.sbt以下 unmanagedClasspath在運行系統+ =文件(「/ mybundle」)
當我需要運行應用程序在「生產」模式中, 我試圖做dist,然後解壓縮壓縮文件,然後進入「bin」,然後在bin文件夾中運行生成的shell腳本。
我發現我的班級沒有閱讀該軟件包。 (這在「Play Console」模式下很好)。 後來我注意到,在生成的shell腳本來運行遊戲,有以下
declare -r app_classpath="$lib_dir/com.foo.abc-web-1.0-SNAPSHOT.jar:$lib_dir/com.foo.abc-common-1.0-SNAPSHOT.jar
我修改行添加我的文件夾,以便它會成爲
declare -r app_classpath="/mybundle:$lib_dir/com.foo.simpleproject-web-1.0-SNAPSHOT.jar:$lib_dir/com.foo.abc-common-1.0-SNAPSHOT.jar
然後重新啓動我的戲應用程序使用shell腳本,我的應用程序可以正確讀取該包。
但是,上述工作必須手動完成,我想將其外部化。
我想解決的是以下幾點: 1.有什麼辦法讓我在build.sbt中指定的bundle文件夾可以在play dist中重用嗎?
或者,如果以上是不可能的,玩DIST期間,有沒有什麼辦法來指定,所以我的文件夾(即「/ mybundle」)將如上加入app_classpath?
有沒有什麼辦法可以在我的build.sbt中的「Play控制檯」模式中將文件夾外化?
BTW我也試圖調用腳本文件,即 ./simpleproject -classpath「/ mybundle」 但它產生「壞的應用程序路徑:-cp」當追加-classpath錯誤。 同樣的情況下,我用-cp替換-classpath。
任何人都可以在上面提供建議嗎?先進的謝謝你。
碰巧在我的情況下,分發捆綁文件不是一個選項。 軟件包文件將由SCM管理,根據環境的不同,文件夾路徑也會不同。 由於要求對所有env使用相同的分配,因此我發現是否可以將該分發包的文件夾路徑外部化。 謝謝你的幫助,詹姆斯。 – Simon2014
對於我在Compile + = file(「/ mybundle」)中添加非託管資源目錄沒有解決問題 /mybundle沒有顯示在app_classpath =「...」 老實說,這是一個非常令人沮喪的事情,這樣一個簡單的任務是在這樣一個巨大的痛苦中。 sbt中有半打classpath設置,它們都沒有幫助 –