讓我們開始用簡單的問題:是的,有一箇中央儲存庫,(幾乎)都可以發現:http://search.maven.org/ 一些公司舉辦自己的倉庫,除了這一點。例如JBoss。如果你想自己託管一些開源軟件,還有Sonatype repository。
respository是一個簡單的文件結構,其中包含jar文件和一些xml元數據。佈局來自maven世界,但幾乎所有的java編譯系統都有一些方法可以從maven central檢索工件。
整個依賴關係的解析與你在npm中所知道的有所不同。你所依賴的每個軟件包都有自己的依賴關係。其中一些可能會發生衝突。在Java世界中,這些傳遞依賴需要被匹配 - 一個普通版本需要被識別。這通常由構建系統完成。所以你的「require」是一個依賴關係,這意味着jar會在類路徑中結束,因此這些類將可用於你的代碼。開箱即用的過程中沒有動態變化(在啓動jvm後將jar添加到類路徑中)。
依賴關係在pom.xml中配置(如果使用maven)build.gradle文件(你應該走向gradle)。還有sbt或Ivy + Ant。
通常您的工件解析系統也會運行構建。這是有道理的,因爲你需要定義類路徑來編譯你的java源文件。如果您只是使用這些工具來複制這些jar文件,您仍然需要找到一種方法將所有這些文件傳遞給編譯器。在第三個依賴之後,這是無聊的。
Maven來自約定而不是配置部分。請參閱5 Minute tutorial。 Intellij集成非常好。
Gradle使用Groovy(一種基於Java vm的腳本語言)來實現類似的目標,但對所發生的事情更加開放。但是這使得IDE和IDE的集成變得更加困難 - 這取決於你的構建有多創意。 gradle user guide是一個很好的開始。
還有螞蟻+常春藤。 Ant是一個簡單的構建系統,可以在其中定義任務。常春藤爲它增加了依賴性解決方案。
從來沒有提到過:sbt(主要來自Scala世界)或leiningen(主要是clojure) - 所有基於JVM的語言。
我的建議是maven - 它需要一個簡單的pom.xml,您可以在其中添加依賴關係 - 如果您遵循其目錄結構約定(這在java世界中很常見),編譯將會不再使用。而且大多數IDE都會工作。如果你的構建需要更復雜的構建步驟,gradle會有一個良好的遷移路徑。
上述5分鐘教程使用原型(maven中的項目模板)來幫助您入門。如果你已經這樣做了,你應該能夠在IntelliJ中打開該文件夾並從那裏繼續。
這個問題要麼太寬泛,要麼尋找外部指針(文檔,教程)或基於觀點(你甚至可以只使用Ivy而不是maven),在這三種情況中的任何一種情況下,都可以關閉 –
與JavaScript相反,你需要編譯和構建Java應用程序,這是在同一工具中構建和依賴管理的一個很好的理由。與大多數IDE的集成是好的(或足夠好的),所以它甚至不妨礙。 –