2013-11-15 111 views
2

我在一個scala項目中有一個依賴項,我想包含它,這樣它就可以在項目中使用,而不必爲使用該項目的每個人使用Internet。換句話說,我想做一種「發佈本地」,但有點不同:發佈本地發佈它只在我的機器上,每個使用該項目的人都必須在本地機器上發佈它,而我想發佈這個依賴項直接在這個scala項目中。本地發佈,但項目本身

它可能和如何?

UPDATE

我想給這個項目的人在互聯網上。我希望他們只下載我的項目,而不必下載其他任何東西。但是我的項目有一個我可以自己下載的外部依賴項。

我可以在項目中加入這個依賴項(自己下載之後)並將項目交給這個人,這樣他們就可以成功運行它了嗎?如何?我該如何讓它從項目中加載,而不是從互聯網或其他任何地方加載?

+4

確實[非託管依賴(http://www.scala-sbt.org/release/docs/Getting-Started/Library-Dependencies.html#unmanaged-dependencies)看起來像你想要什麼?您可以將您的依賴項添加到項目的'lib'文件夾中,並將其捆綁以供其他人使用。對於具有多個模塊的項目,您可能還想查看[多項目構建](http://www.scala-sbt.org/release/docs/Getting-Started/Multi-Project.html)。 –

+1

我不明白這個問題。你不想將它發佈到互聯網上,但你也不想在本地發佈它。還有什麼其他選擇可能......?我不知道「直接發佈這個依賴」是什麼意思。 –

+0

@SethTisue **你不想將它發佈到互聯網** - 不正確。 –

回答

3

這個人你想給你的項目:你希望他們能夠構建項目本身,或者僅僅是運行呢?

  • 如果你希望別人能夠建立它:添加庫作爲一個非託管的依賴,如所描述here。將庫jar放在項目頂層的lib目錄中,並將jar作爲項目的一部分檢入版本控制。

  • 如果你只希望別人能夠運行它,無論是:

    • 使用SBT-Assembly插件(https://github.com/sbt/sbt-assembly),以創建一個包含編譯的代碼和庫的編譯代碼一個jar 。

    • 或者只是將它作爲兩個單獨的瓶子(您的和圖書館)並將兩個罐子都提供給用戶,或許還有一個啓動腳本。

+0

是的,建立。我有一個包含幾個項目的項目。然而,我將一個.jar放入根目錄'/ lib'目錄,將其從'/ project/Build.scala'中移除,現在它不能編譯,因爲它似乎無法找到.jar文件。 –

+1

下面是一個腳本,顯示'/ lib'功能的工作原理:https://gist.github.com/SethTisue/d33c5a5e3fdd1e20b3b3。不知道爲什麼你的項目會有所不同。你有沒有試圖將問題最小化?你能向我們展示你的構建......嗎? –