我正在做一個專案,當我運行 maven test 時,我將所有依賴項都作為 jars,所以我可以在編輯代碼時使用這些 jars 中的類的方法,但是我想知道什么時候運行 maven deploy 來打包代碼作為一個jar 并將其放在遠程存盤庫中,這個 jar 是如何執行的?它不需要pom中提到的所有罐子嗎?因為在讀取 jar 的內容時,它只包含 src/main/java 下代碼的編譯類。我認為有一點我誤解了。如果我遺漏了一些基礎知識,或者我應該知道請給我推薦一個好的指南。提前致謝
uj5u.com熱心網友回復:
就像您說的,要運行 jar,您需要每個依賴項。但是要將它放在存盤庫中,您不需要它。
所以基本上當你想創建可運行的 jar 時,你需要一些 maven 構建插件,它們會將每個依賴項打包到 .jar 檔案中,如 maven-shade-plugin。
如果您想打包一個 jar 以將其上傳到遠程存盤庫供其他人使用,則您不需要這樣做,因為現在有人會使用您的依賴項下載您創建的每個依賴 jar(maven 會這樣做)它自動)。
例子
這一切都取決于您需要做什么。
想象一下,您有一個控制臺應用程式,它顯示芝加哥的天氣,該應用程式使用依賴項來獲取天氣,我們將其稱為 weather-dep,因此您的應用程式需要在內部依賴 weather-dep。
現在,如果您希望您的用戶只運行它(jar 可以從控制臺“java -jar yourWeatherApp.jar”運行),您需要以 yourWeatherApp.jar 將包含在 weather-dep.jar 中的方式打包它,maven 將下載包裝程序。
第二種選擇是,當您知道有人想要使用 yourWeatherApp.jar 顯示芝加哥的天氣時,該人將其應用程式稱為 usaWeatherApp.jar,并且他將在他的應用程式中包含您的依賴項,然后他將能夠使用來自 yourWeatherApp 的類。 jar 也來自weather-dep.jar,因為它是您的應用程式內部的依賴項。
您只需要知道哪個用例最適合您。
簡而言之,當有人不想只運行您的應用程式而不將它的函式/類等包含在他們的應用程式中時,您將包含依賴項的 jar 打包。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359799.html
上一篇:java.lang.NoClassDefFoundError在docker中使用FirefoxDriver(Selenium)和alpine影像時出錯
