2014-02-17 41 views
0

我有消息每種語言文件路徑:release/linux/mhome/user/config/languages/sv/messages.sv如何添加遞歸Play2.0框架build.scala郵件文件

我還不得不提到每個消息的路徑Build.scala如下文件:

unmanagedResourceDirectories in Compile <+= baseDirectory(_/".."/".."/".."/"release"/"linux"/"mhome"/"user"/"config"/"languages"/"zh"), 
unmanagedResourceDirectories in Compile <+= baseDirectory(_/".."/".."/".."/"release"/"linux"/"mhome"/"user"/"config"/"languages"/"en"), 
unmanagedResourceDirectories in Compile <+= baseDirectory(_/".."/".."/".."/"release"/"linux"/"mhome"/"user"/"config"/"languages"/"fr"), 

但我需要添加路徑,直到Build.scala中的語言文件夾,並且所有消息文件都在類路徑中遞歸添加。如何實現這一目標?

+0

你想自動添加每個找到的語言在某個路徑,或者我誤解了這個問題? – johanandren

+0

@johanandren我需要給父文件夾的路徑,我期待每個消息文件被添加到類路徑中的播放。用我的方法,我必須給每個消息文件的絕對路徑,這是繁瑣的方式來添加消息文件 – user2800089

回答

0

拼圖的第一部分是使用< ++ =到多個條目添加到是一個列表在一個去

unmanagedResourceDirectories in Compile <++= baseDirectory { dir => 
    ... something that returns a Seq[File] ... 
} 

的第二部分是SBT路徑查找器(http://www.scala-sbt.org/0.13.1/docs/Detailed-Topics/Paths.html)設置鍵,它允許你指定通配符模式來查找文件:

val pathFinder = (".."/"shortened"/"for"/ "brevity"/"languages") ** "*" 
val matching: Seq[File] = pathFinder.get  

探路者API還允許你做更高級的過濾,如果你需要它。

+0

因爲我根本沒有意識到scala編程,請告訴我,如果下面的代碼是可以添加build.scala:unmanagedResourceDirectories in編譯<++ = baseDirectory {dir => \t \t val pathFinder =(「..」/「magichome」/「xruser」/「config」/「languages」)**「messages。*」 \t \t val matching :Seq [File] = pathFinder.get \t}, – user2800089

+0

是的,我認爲這應該工作。我真的建議你花一些時間閱讀SBT文檔http://www.scala-sbt.org(這很好),如果你打算做這種比基礎更先進的東西。除了sbt文檔之外,還有一個很好的介紹性MEAP「SBT in Action」。 – johanandren

+0

如果我把上面的代碼放到Play2.0的build.scala中,它給了我錯誤:Build.scala:21:value /不是java.lang.String [error]的成員val pathFinder =(「.. 「/」mhome「/」xuser「/」config「/」languages「)**」messages。*「我只需要在Play中實現這一點,爲此我必須理解scala的所有概念。:(:( – user2800089