2011-05-30 68 views
1

我是新來的maven。Maven依賴管理vs顛覆svn:外部的企業應用

給定企業級Java應用程序。源代碼由顛覆管理。

據我瞭解,一旦我friezed代碼,我應該能夠編譯5年後者並獲得相同的結果,但我有點擔心,如果Maven可以用100%的準確處理:

  1. 是否有可能當maven去互聯網它會帶來損壞的罐子(例如網絡問題或鏡子有不正確的罐子)?
  2. 讓我說我想重新編譯我的代碼5年後。是否可能需要jar不會在那裏?
  3. 企業應用程序依賴於這種「不透明」的外部來源(例如,互聯網鏡像)是不是有風險?

從我以前的地方,我們利用該svn:外部 - 我們有一個特殊的目錄(供應商分支)svn所有第三個產品(罐子)。對於每個產品及其特定版本都有一個專用目錄。應用程序代碼使用svn external從供應商分支中攜帶混凝土罐。

在這種配置中,我知道源代碼控制下的所有罐子,我就可以在5年後,重建我的應用程序,並使用相同的瓶當5年前包裝。

我想念什麼?

回答

1

是的,這是有風險的,但有辦法解決這個問題。

  1. 這可能發生,事情確實發生非常頻繁。但是,爲了治癒損壞的下載,您可以簡單地從本地文件系統中刪除軟件包並拍攝Maven重新下載它。一旦他們在那裏,我不會認爲鏡像中的軟件包很容易被損壞。
  2. 不知道什麼是由維護者的官方消息,但即使有人是要確保庫「將永遠存在」,硬件故障可能發生的事情,公司獲得銷售流程發生變化,等等,等等,只要你是相信別人比你自己,你不能確定。
  3. 是的。

要真正解決這個問題,你可以設置自己的資源庫和NexusArchiva(見SO: Best enterprise repository tool for Maven 2?)。如果您有自己的索引並且正在運行,那麼您可以完全控制未來幾年保護依賴庫。當然,它可能仍然會崩潰:)

如果你正在運行小型企業,我不認爲改變你的流程和建立你自己的鏡像有什麼好處(增加的價值是什麼?)。 svn:externals也許不是那麼複雜的方法,但我個人也不會認爲它不好。

我還要補充一點,Maven是不是依賴管理得多。當你給Maven更多的控制項目時,有越來越多的協同作用,所以如果你最終切換到Maven,那麼依靠它的其他功能(更容易更新庫,自動下載源,結構約定,插件體系結構,等等。)。

+0

+1下載的jar可能是合法的jar文件,但不會是正確的版本(例如,因爲鏡像端的錯誤)? – dimba 2011-05-30 16:01:06

+0

Maven將下載指定的版本,否則,這是一個錯誤。我猜鏡子也可能會將收到的軟件包與錯誤的版本鏈接起來,但這又是一個錯誤 - 沒有任何意義。 – 2011-05-30 16:10:53