2013-12-11 60 views
1

我正在開發富客戶端Java應用程序,並且需要一個功能在新版本可用時執行自動更新。如何實現基於Maven自動更新的Java應用程序?

我正在使用maven構建。通過它自己,maven-dependency-plugin可以複製和下載給定POM的依賴關係。唯一的問題是如何將它集成到Java應用程序中。

有沒有人試過這個?

+0

這似乎很奇怪。 Maven是開發過程中管理項目的工具。您可以嘗試在最終應用中添加POM,遵循Maven文件夾結構,並設置一個定期任務來調用Maven命令來強制下載罐子。 更好的解決方案是使用嵌入式Maven。無論如何,這將意味着與Maven及其配置的鬥爭。 – polypiel

+0

這也意味着使用Maven構建應用程序堆棧的Maven部分......這不會是我實現自動更新功能的選擇,對某些Web服務器的簡單HTTP調用就足夠了。 – Gimby

回答

0

我不確定你有什麼樣的應用程序,或者你是否需要maven來完成這項任務。首先,你需要檢查是否有新版本可用。如果答案是肯定的,那麼你的監聽器會觸發你的updateApplication(假設你這樣命名)方法。你的方法比下載所需的罐子,文件或類似的東西,到撥出的地方,取代舊的。但就像我說的,我不知道你的架構,它可能不適合每一種情況。

+0

您還需要編寫一個自定義的ClassLoader,它允許您在運行中替換類(我認爲這很危險),或者使應用程序循環的一些方法,以便它拾取新類(我看到大多數應用程序都會)。 – CodeChimp

+0

CodeChimp你是對的,但正如我所說的那樣,這只是一個假設,並沒有關於架構的知識。您也可以嘗試使用OSGI。 – Canberk

+0

我認爲OSGI將是長期最好的選擇,如果這個應用程序打算長時間生活。不過,我曾看過一次,而且大部分時間都在我頭上。 – CodeChimp

1

我假設你說的是庫/ jar(依賴)。在這種情況下,您刪除版本。因此,默認情況下,maven將採用最新版本。但在實際情況下,當您從一個版本移動到另一個版本時,需要進行迴歸測試,因爲版本中的某些更改可能無法正常工作。

0

對於客戶端,您可以編寫一個方法,在啓動應用程序後檢查更新。

0

Maven是一個配置管理和部署工具。 您需要運行時解決方案而不是構建/編譯時間。 如果你有一個Maven倉庫中心,你應該有一個下載器來從中檢索最新版本。 例如,您可以找到一些腳本如何從nexus下載工件。 Nexus有一個你可以使用的休息API。 這只是一個提示。

相關問題