2015-06-16 79 views
1

我有一個Play 2.3.x應用程序,它由一些子項目組成,我使用dist來生成完整應用程序的zip包。忽略dist任務上的依賴關係罐子

問題是這個包太大了,因爲它包含了應用程序運行所需的每個依賴項(例如:scala,play libs,db driver(s)等),並且需要大量的時間來上傳到服務器。

我想知道:有可能告訴dist任務忽略一些這些jar並且不包括它們在生成的zip文件中?我們的想法是在服務器上擁有這些依賴關係,並使用一個自定義啓動腳本將所有這些代碼添加到類路徑中,並且只使用我的代碼/資產jar部署較小的zip。

這可能嗎?

+0

對此已有[功能要求](https://github.com/sbt/sbt-native-packager/issues/365)。然而,這對於打包和不打包來說是一個非常複雜的事情。作爲第一步,我推薦諸如proguard之類的東西來減少類文件的數量。 – Muki

回答

2

dist任務來自sbt-native-packager。 Play 2.3譜系使用0.7.4版本。

如果您運行sbt show universal:mappings,您將獲得項目中當前包含的所有東西的輸出。所以通過修改mappings鍵,你可以開始(仔細)過濾掉任何你想要的東西。

編輯:正如Muki在評論中指出的,這裏是direct link的相關文檔。

+0

你可以展示一個小例子(例如:在生成的包中只包含'junit.junit-4.10.jar')? – Salem

+0

當然,有點匆忙,但有一種方法:https://github.com/Lykathia/ignore-sbt-dependencies – Lykathia

+1

有一些[更多文檔在這裏](http://www.scala-sbt.org/ SBT-本機包裝機/格式/ universal.html#自定義)。映射非常簡單:source:File - > dest:String tuples。您可以根據需要過濾它們。例如。通用映射:=(通用映射).value.filter {case(source,dest)=> dest包含「lib /」}' – Muki