日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

idea工具(1):依赖包详解

發布時間:2024/8/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea工具(1):依赖包详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、如何導包

idea 中導包,分為兩種,pom 文件導包和手動導包,這里說一下如何 pom 文件導包。

1.1 Maven 倉庫

首先,百度 maven,找到對應的倉庫(repository)官方網站:

輸入包名,點進去,就可以看到:

選好版本:

復制粘貼就可以。

1.2 百度包名

直接百度包名,一般也會有熱心網友給出帖子,這個時候就需要更改一下版本了。

1.3 手動導包

File——Project Structure,或者快捷鍵:Ctrl+shift+Alt+S

2、導入的包在本地哪里?

打開 file——settings,找到 maven:

如上圖所示,可以看到 maven 的本地倉庫(這個是默認倉庫),當然可以自己更換位置(建議不要修改,因為之前項目拉取的各種依賴包都在這里,換了位置下一個項目加入依賴還要重新下載):

上面 repository 就是倉庫的意思,這個是 maven 的本地倉庫,對應的每個 idea 項目中也有一個包庫,其中引用的就是 maven 倉庫里面的包。

那么如何找包呢?比如找下面的包:

首先,找到 maven 倉庫位置,然后找到 io 文件夾,再找 netty:

3、pom 文件與 idea 界面中左右兩側的依賴包

在 idea 中,可以看到,左右兩側都有 dependency,其中左側表示的是項目所用到的去重后的所有依賴包。

為什么要去重呢,因為每個 dependency 往往需要依賴其他的包,如果添加的依賴比較多,那么依賴包 A 需要大量的其他依賴包,這就會導致很多依賴包重復依賴。

與 pom 文件息息相關的是右側的 dependencies,每當 pom 文件導入一個依賴包,右側的 dependencies 就會增加一個,如下圖所示:

藍色框的依賴包和紅色框的依賴包導入語句是一樣的,只不過 breeze-macros 是需要依賴包的,將其展開就是其所需要的依賴包,所以很多時候你會發現,pom 文件中導入的依賴包很少,但是倉庫中確有很多依賴包,這是因為一個依賴包需要很多其他依賴包才能執行。就好像你要閱讀一篇英文金融論文,你需要的技能可能會包括:英文、閱讀理解、金融基礎等等,這些技能就是閱讀該論文所需要的依賴。

打開本地 maven 倉庫中其中一個包,里面有一個文件就記錄了其依賴包:

添加一個依賴的,基本流程是:

  • 首先,在 pom 文件中寫入:
  • <dependency><groupId>org.scalanlp</groupId><artifactId>breeze-macros_2.11</artifactId><version>0.13</version></dependency>
  • 掃描本地 maven 倉庫看看存不存在該依賴包,如果存在則復制到 idea 中 ,(這里寫錯了,idea項目目錄下本身是不存在依賴包的,所有依賴包都存在與本地maven倉庫中),如果不存在,則進行下一步
  • 聯網,maven 工具從中央倉庫(也就是 maven 服務器中,這個服務器可以進行設置,一般是選擇國內阿里鏡像,下載比較快,這里服務器設置在.m2/setting.xml 中)下載 breeze-macros_2.11 包,同時會下載相關的依賴包,在左側顯示出來:
  • 在上圖中,將 breeze-macros_2.11 展開后,其下部分便是其所需依賴包,其中暗淡藍色框部分是與項目中的依賴包重復部分,可以看到每行后面括號里說明了原因,與什么什么包相矛盾或者是出現了兩個。

  • 依賴包下載完成,去重之后,導入項目中,這時就會出現在項目的左側:
  • 可以看到,這時候,其展開后展示的是該依賴包的源代碼,而不再是其所需的其他依賴包,因為其他依賴包是和它在同一級目錄中。

    承接上面第一步,idea中到底存不存在依賴包:

    之前,以為本地的maven倉庫是一個公共的依賴庫,無論你的idea項目是否存在都不會影響它,所有給我一個錯覺——idea項目和本地maven倉庫關系不大,當導入依賴的時候,idea會從本地倉庫復制依賴包到項目中,但是事實上這是錯誤的,因為本地的maven倉庫就是idea項目的一部分,只是可能多個idea項目會同時用的這個倉庫才會給我這種錯覺,我之前的想法是maven倉庫在idea項目之外,那么idea每次運行都要調用maven倉庫的jar包多麻煩啊,為什么不直接復制到idea目錄下,現在想想自己走入了一個誤區,對于計算機來說無論是maven倉庫還是idea目錄下調用起來都是一樣的,其路徑只是一個字符串罷了,不存在距離遠近。

    4、報錯:程序包找不到怎么辦?

    新拿來一個項目通常就會遇到這樣的問題,依賴包不存在,其解決步驟,我總結分為如下幾步,一步步來,肯定可以解決。

    4.1 第一步:更新依賴包

    一般情況下,打開 maven,然后點擊 clean(刪除之前編譯過的文件),然后直接點擊 Maven 中的更新依賴包即可:

    當然,如果不想手動更新,可以設置自動更新,file-Setting:

    選擇 import maven projects automalically(本質是默認自動更新),應用之后,只要我們更改了 pom 文件,就會自動更新依賴包,并且不會再出現導入提示框:

    個人建議還是不要選擇這個,因為有時候改動 pom 文件的時候,還沒有改完就開始自動更新了,一點也不智能,還是人為控制比較好。

    4.2 第二步:始終更新快照

    不過,有時候有時 reimport 也解決不了問題,出現大量紅色下劃線,還有報錯:

    Cannot resolve nz.ac.waikato.cms.weka:weka-stable:3.8.5

    這時候要用另外一種方法:file——setting:

    這里說一下,Always update snapshots 是始終更新快照的意思。

    什么是快照?

    maven 倉庫一般分為兩個倉庫:public(Release)倉庫和 SNAPSHOT 倉,前者存放正式版本,后者存放快照版本。快照版本會不斷更新迭代(新功能會有 bug,不斷更改),迭代多次之后穩定了,就會形成一個新的正式版本。

    選擇 Always update snapshots 與不選的區別?

    個人認為,如果不勾選 Always update snapshots,那么在 maven 服務器上拉取依賴包的時候,都是自動默認拉取正式版本的依賴包;但是如果勾選了,則會去查看依賴包的對應快照版本,并且會定期去看快照版本有沒有進更新。

    為什么勾選了 Always update snapshots 能夠一定程度解決 reimport 解決不了的問題?

    原因可能有兩個,一個是當前穩定版本存在 bug,而下載快照后可以解決(概率較小);較大的概率是因為 reimport 時,因為網速原因下載了一部分就停止了,而 maven 掃描到本地倉庫存在該依賴包(殘缺),就不會下載,這時候突然下載快照版本,替換了原來的殘缺版本,所以就可以了。

    要不要勾選 Always update snapshots

    個人認為,如果只是單純為了解決依賴包問題,可以先勾選,解決完了就不勾選;因為快照版本是可能存在一定 bug 的,它不斷進行更新,萬一這一版本的依賴包存在問題,你的程序就可能崩了;而且不斷更新會浪費一定的時間和帶寬。

    4.3 第三步:刪除依賴包,重新下載

    還有的時候,是下載依賴沒有下載完全,但是你 reimport 的時候,程序發現已經存在(不會斷點重傳),這個時候需要到 C:\Users\當前用戶名.m2\repository 庫中去刪除那個包,然后重新下載,這個會解決一部分問題。

    4.4 第四步:導入成功了,但是依然報錯找不到包

    如果導入成功了,但是報錯找不到包如下:

    這時候點擊項目右鍵,找到:open module setting:

    如上圖,根據箭頭,找到所在項目的所在包,可發行其 Scope(也就是這個包可執行范圍)是 Test,也就是說這個包只有在進行測試的時候,才會發揮作用;而我們現在要在運行的時候也要讓其發揮作用,則要將 Test 改為 Compile(編譯)。

    OK,今天就到這里,更多精彩內容關注我的個人網站:藍亞之舟博客。

    總結

    以上是生活随笔為你收集整理的idea工具(1):依赖包详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。