2009-09-15 56 views
4

也許我之所以停止學習Java的原因是因爲我HATE Java如何處理外部庫。我被困在一個地方,單獨添加它們,解決版本控制的問題,每次移動/重命名它們,每次發佈Java應用程序時都會反覆複製和寫入類路徑。管理各種Java外部庫的最優雅的解決方案是什麼?

必須有一個優雅的解決方案,所有這一切。我把我所有的庫(無論任務,平臺或其他)在自己的小文件夾的「LIB」文件夾中的我的開發文件夾,有點像這樣:

Dev 
    -lib 
    +JS-jQuery 
    +Flex-Degrafa 
    -Java-Xerces 
     +Xerces-1.2.3 
    +More libraries 

我可以使用Netbeans或Eclipse for Java開發,但它們都不能提供非常簡化的管理方法(更不用說笨蛋證明)來管理所有這些。

在正確的方向推動或在線文章/教程這將不勝感激。

回答

7

您可以使用Ant + IvyMaven來管理您的庫依賴項。

+0

對於maven而言,+1可以生成IDE特定的文件(因此您可以獲得IDE獨立性),比如Eclipse的.classpath和.project。 –

+0

@Pascal T:Netbeans直接讀取Maven文件並將其用於項目配置,而不是轉換爲IDE特定的文件。 –

+0

這很好,但說實話,生成IDE特定的文件不是我每天做10次,所以對我來說不是什麼大問題。而且,我並不喜歡嚮導來管理我的pom.xml文件,而且我更喜歡手動完成,所以我沒有考慮內置支持或插件。換句話說,這只是我的觀點,我認爲我們可以沒有它。 –

1

如果您正在使用Linux,則可以使用APT或RPM安裝Java庫。否則,我通常會將預編譯的JAR檢查到我項目的版本控制庫中的lib目錄中,並確保JAR文件的名稱包含完整版本信息。例如。 lib/foo-1.5.6.jar,而不是lib/foo.jar。

爲了避免在運行應用程序之前手動設置類路徑,可以在JAR自身的清單中設置類路徑以定義每個JAR文件的依賴關係。加載類時,JVM將遵循所有的依賴關係。

+0

+1用於將版本號保存在jar文件中。 –

6

如果只是依賴關係管理,並且您對構建過程的其餘部分感到滿意​​,那麼我會使用Ivy,因爲它可以不顯眼地管理您的依賴關係,使您的現有構建過程保持不變。 Eclipse上有一個名爲IvyIDE的插件,它通過類路徑容器提供依賴關係。

Maven 2有一個更陡峭的學習曲線,但通過m2eclipseIAM提供了更豐富的一組功能來構建項目和Eclipse集成。

就我個人而言,我使用Maven是因爲我有大量的項目可以使用,而且Maven特別適合於大量項目的高效開發。

看看介紹文檔,看看什麼適合你。

2

的Netbeans 6.7.1的Maven的支持是相當不錯的,並出現與該IDE的開箱。

Eclipse的插件令人沮喪,我給了Netbeans另一個嘗試。

除了ChssPly76的選項之外,第三個選擇是使用Ant與Maven Ant Tasks。我不知道是否我會打電話給任何這些解決方案,特別是「優雅」,但是它們確實讓您不必管理自己的lib /目錄和類路徑變量。

0

Maven通常比它的價值更麻煩,但能夠直接將Maven項目直接打開到IntelliJ IDE等IDE是非常好的。例如,IntelliJ將下載所有依賴關係,並使它們可用,而不必先運行構建,或者使用mvn命令,然後再進行項目刷新。每次添加依賴關係時,不必重新生成項目。我與許多Eclipse開發人員一起工作,這些開發人員僅爲此而切換到IntelliJ。

但是,Maven的一個缺點是許多庫(或庫的版本)在公共存儲庫上不可用。因此,通常需要設置一個本地存儲庫,例如archiva。在ant中,它只是將其添加到存儲庫中的lib目錄中。

當你需要做一些maven不直接通過插件支持的事情時,Maven也會發作。通常會有幾行螞蟻通常會變成早晨值得工作的東西。

最後,buildr是使用Maven的依賴管理和插件的好方法,同時也支持臨時任務。

+0

「對Maven增加附加值的主觀觀點」 - 根本不是主觀的,而是基於真實世界的經驗來維護Maven在衆多項目上的構建。 「關於IDE優勢的錯誤/無關爭論」 - 不相關?我建議如果你使用maven over ant,使用某些類型的IDE可以幫助你。再次,這是基於觀察人們與Maven鬥爭的真實體驗。 「過時的建議(去Nexus,而不是Archiva)」 - 過時?不,只是主觀的。此外,這不是一個建議。 –

相關問題