2016-05-17 90 views
1

我正在使用Maven編寫Java應用程序。我必須在遠程強大的服務器上部署應用程序才能運行實驗。我想到的最簡單的方法是使用Maven着色插件構建一個jar-with-dependencies,然後將uber-jar複製到遠程服務器。但是jar很大,超過100 MB,並且需要一些時間才能通過我們的網絡發送。這是多餘的,因爲大部分jar包含重度依賴(Scala,Spark,Jetty),當我們更改代碼時,只有一小部分會發生變化。使用Maven在遠程服務器上部署Java應用程序

我可以使用Maven在遠程服務器上安裝依賴項,然後只發送更小的jar而不依賴於服務器?

我有SSH連接到服務器,我可以使用SCP插件。

+1

如果一臺服務器功能強大,爲什麼不建立它呢? –

+0

你可以創建一個「其他任何東西」的超級節點,發送一次,然後在遠程服務器上運行它時將你的「可改變」的東西添加到類路徑中......看到這個:http://stackoverflow.com/questions/219585 /設置多個jar-in-java-classpath – Mainguy

+0

@YegorChumakov然後我需要將代碼發送到服務器,這是一個冗餘步驟,我不使用它作爲開發機器,而且我也不每次我更改代碼時都想推動git –

回答

0

你在你的問題中提到Jetty,所以我假設你的應用服務器是Jetty。我會嘗試將公共庫jar上傳到服務器,然後將它們包含在jetty類路徑中。這將是一次性任務。也許這將有助於:How do I place jars in jetty/lib on the jetty classpath?

之後,您可以使用maven構建一個您可以上傳和部署的「瘦」戰爭/ jar。

+0

Jetty作爲示例被提及。我也有一個案例,我不使用碼頭 –

+0

該解決方案仍適用於任何應用程序服務器。將您的第三方jar上傳到您的服務器的lib目錄。並使用maven構建一個「瘦」的戰爭/罐子,你可以上傳和部署。 – chrisl08

相關問題