1. 程式人生 > 實用技巧 >關於Maven工程依賴包的一系列問題

關於Maven工程依賴包的一系列問題

本地倉庫和映象這些就不多說了。

建立Maven工程慢,轉載自解決IntelliJ IDEA 建立Maven專案速度慢問題 DarchetypeCatalog

原因

IDEA根據maven archetype的本質,其實是執行mvn archetype:generate命令,該命令執行時,需要指定一個archetype-catalog.xml檔案。

該命令的引數-DarchetypeCatalog,可選值為:remote,internal ,local等,用來指定archetype-catalog.xml檔案從哪裡獲取。

預設為remote,即從 http://repo1.maven.org/maven2/archetype-catalog.xml路徑下載archetype-catalog.xml檔案。

http://repo1.maven.org/maven2/archetype-catalog.xml 檔案約為3-4M,下載速度很慢,導致建立過程卡住。

解決方法

1.在下面介面新增一個屬性,archetypeCatalog = internal

方法二

在maven的VM Options加上-DarchetypeCatalog=internal引數,如下:

方法3: 用local (推薦這種方法 完美)

1.由於預設情況下,根據archetype建立maven專案會從網路下載catalog檔案,導致建立maven專案緩慢

Searching for remote catalog: http://repo1.maven.org/maven2/archetype-catalog.xml

2.解決辦法可以設定使用本地catalog檔案,在IDEA中設定archetype的使用方式為local;

-DarchetypeCatalog=local

直接先把 檔案用搜狗瀏覽器或其它下載工具下載下來。

下載後放到哪裡呢,這裡與本地倉庫的位置有關,假如本地倉庫是maven預設的,並沒有修改 那麼就需要放到C:\Users\del-berlin\.m2\repository\org\apache\maven\archetype\archetype-catalog\2.4\下 ,本地倉庫的預設位置:Default: ${user.home}/.m2/repository

manven無法自動下載jar包 轉載自關於IDEAmaven無法自動下載jar包pom報錯

首先我的錯誤是在IDEA和ECLIPSE上都無法建立springboot與maven專案,都是同樣的maven依賴不能自動下載的原因,所以排除了軟體的問題,以下是解決路程:

一:我先了解了一下maven倉庫的構成與核心配置檔案settings.xml中每個欄位都代表的是什麼意思

 1 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 2   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
 4                       https://maven.apache.org/xsd/settings-1.0.0.xsd">
 5   <localRepository>${user.home}/.m2/repository</localRepository>
 6   <interactiveMode>true</interactiveMode>
 7   <usePluginRegistry>false</usePluginRegistry>
 8   <offline>false</offline>
 9   ...
10 </settings>
  • <localRepository />:配置系統本地倉庫的路徑。預設值是${user.home}/.m2/repository目錄。此元素特用於允許所有已登入到主伺服器的使用者共用公共本地倉庫。
  • <interactiveMode />true,Maven嘗試與使用者互動,需使用者輸入,否則設定為false,預設為true
  • <usePluginRegistry />true,Maven使用${user.home}/.m2/plugin-registry.xml來管理外掛版本, 否則false。預設值為falseNote that for the current version of Maven 2.0, the plugin-registry.xml file should not be depended upon. Consider it dormant for now.(這句話暫時不知如何翻譯出來妥當,畢竟已經到Maven 3.x時代)
  • <offline />true, 構建系統在離線模式執行,否則false。預設值為false。此元素對於因網路設定或安全原因而無法連線到遠端倉庫的伺服器非常有用。

<servers />

 1 <servers>
 2     <server>
 3       <id>server001</id>
 4       <username>my_login</username>
 5       <password>my_password</password>
 6       <privateKey>${user.home}/.ssh/id_dsa</privateKey>
 7       <passphrase>some_passphrase</passphrase>
 8       <filePermissions>664</filePermissions>
 9       <directoryPermissions>775</directoryPermissions>
10       <configuration></configuration>
11     </server>
12   </servers>
  • id:Maven嘗試連線的倉庫/映象伺服器的id,而不是使用者所登入的伺服器id。
  • username, password:伺服器進行身份驗證所需的登入名和密碼。
  • privateKey, passphrase::(可選)與前兩個元素類似,這兩項指定私鑰的路徑(預設${user.home}/.ssh/id_dsa)和passphrasepassphrasepassword元素將來可能外化,但目前它們必須以純文字形式配置在settings.xml檔案中 。
  • filePermissions, directoryPermissions::倉庫部署時建立的檔案或目錄的訪問許可權。這兩個元素的合法值是一個三位數字,對應了unix檔案系統的許可權,如664,或775。

<mirrors />

1  <mirrors>
2     <mirror>
3       <id>planetmirror.com</id>
4       <name>PlanetMirror Australia</name>
5       <url>http://downloads.planetmirror.com/pub/maven2</url>
6       <mirrorOf>central</mirrorOf>
7     </mirror>
8   </mirrors>
  • id, name::此映象的唯一識別符號和使用者友好名稱。id用於區分<mirror />元素,並在連線到映象時從<servers />部分選擇相應的驗證資訊。
  • url: 此映象的URL 。構建系統將使用此URL連線到倉庫,而不是原始倉庫URL。
  • mirrorOf::此映象所映象的倉庫id。例如,指向Maven中央倉庫central repository(https://repo.maven.apache.org/maven2/)的一個映象,將此元素設定為central。更高階的對映,如repo1,repo2or*,!也是可以的.,但不能與<mirror />的id相同。

可連線多個遠端映象,我的xml配置檔案中包含了公司私服映象

但是我點進url後發現500伺服器錯誤,這有可能是其中一種原因

下來我又配置了阿里的映象

1 <!-- 阿里雲倉庫 -->
2         <mirror>
3             <id>alimaven</id>
4             <mirrorOf>central</mirrorOf>
5             <name>aliyun maven</name>
6             <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
7         </mirror>
8     <mirror>

後瞭解到你的電腦中會有兩個maven倉庫,一個是你自定義的全域性maven倉庫和settings.xml配置,另一個是你本機.m2問價夾中的maven倉庫,考慮到此,我在IDEA中點選settings中maven全域性設定

maven home directory 、User settings file、Local repostory三個配置必須統一,假如用軟體自帶的maven home directory 、User settings file,則必須將本地倉庫換為.m2檔案底下的repostory倉庫,如圖:

在maven下載失敗期間產生了許多字尾為.lastupdated的檔案,一般是下載失敗後產生的檔案,當這些檔案存在時,maven並不回去自動下載jar包,附上批量刪除.lastupdated問價的方法:

windows系統下,cd到本地倉庫目錄下,執行命令(轉載自CSDN部落格)

 for /r %i in (*.lastUpdated) do del %i

彙總,轉載自IDEA中Maven依賴包下載不了的問題解決方案彙總

這個依賴包下載不了的問題真的是很煩,之前一直把下載不上的依賴剪下再貼上到pom.xml檔案中,儲存它就自動下載了,但是今天怎麼剪下貼上都沒用,所以就花了點時間在網上各種搜解決方案,試了一些之後終於從根本上解決了問題,所以寫個部落格把解決這個問題的方案彙總一下!

1. 先是對圖上的兩個位置一番狂點進行重新整理,然並卵...

於是又按照部落格上的指示去尋找 Settings -> Build,Execution,Deployment -> Build Tools -> Maven -> Ignored Files

如下圖:

然而這個對我依然沒有什麼幫助,但還是要記錄一下的,並感謝這位博主哥哥!!!

原文地址:https://blog.csdn.net/qq_35981283/article/details/73928035

2.之後我又找了一些關於配置的, Settings -> Build,Execution,Deployment -> Build Tools -> Maven -> Importing,如下圖:

然而...還是沒有什麼卵用...到了這一步我發現該設定的都設定好了,雖然這些設定並沒有解決我的問題,但還是要記錄一下的,說不定有人會因為設定問題導致依賴包下載不下來...

3.重點來了,這次我又找到了一篇部落格,徹底解決了我的問題. 右擊Maven專案,操作如下圖:

點選Open'settings.xml' , 剛開始這個位置是Create 'settings.xml' ,開啟之後新增在裡面添加了映象伺服器:

然後,我又按照最前面的方法進行Reimport,依賴包終於開始下載了!!! 內牛滿面啊... 可能這個大家都設定過,但還是要記錄一下的,畢竟實實在在的解決了我的問題,附一份程式碼:

========================耀眼的故意引起注意的分隔線========================

(2020.04.09 補一下:評論區有大佬們討論說url中用http不好使(就是下載不了,或者下載緩慢的問題),所以此處可以換成https進行嘗試~)(這個有點重要)(看我一眼)(~~~~~)

<mirrors>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>-->
<url>http://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
原文地址:https://blog.csdn.net/sky19891212/article/details/43924831

真的是非常感謝這位博主大哥!!!

4..好不容易下載下來之後,發現右邊報紅了,我眼瞎了嗎,眼瞎了嗎,瞎了嗎...

然後就去網上搜了一下,有兩種解決方式:

1.把pom.xml中對應的依賴先刪除,然後重新整理右側,之後再把依賴貼上到pom.xml中,再次重新整理右側就好了

2.從本地倉庫將對應的包刪除掉,然後讓maven重新下載

原文地址: https://blog.csdn.net/u010003835/article/details/78480626

也感謝這位博主哥哥!!!

至此之後,我可能再也不用擔心依賴包下載的問題了,十分開心...

========================華麗的分割線========================

2020.04.09 補充:(汲取評論區中遇到的,且文章中並未涉及到的解決方法)

1.Settings -> Build,Execution,Deployment -> Build Tools -> Maven -> Work offline

評論區一大佬說了,這個儘量不要勾選,可以嘗試修改此項解決問題。

(哪個大佬呢,就是這個,歡迎光顧,萬一發現啥寶藏文章豈不是賺翻了,傳送門:https://me.csdn.net/qq_43384381)

2. Settings -> Build,Execution,Deployment -> Build Tools -> Maven -> Maven home directory

2019版的IDEA,要注意maven版本相容問題,評論區另一個大佬(大佬專用傳送門:https://me.csdn.net/stonennnn)說,2019.3版本的IDEA用3.6.1的maven相容不了,換了最新的maven3.6.3好使。(maven各個版本可自行下載喲~)

我最近剛換了2019.3版本的IDEA,默默看了一眼自己的maven版本:3.6.1

(所以,實在沒辦法的可以嘗試更換maven版本,我這邊2019.3和maven3.6.1貌似挺般配…沒出現什麼異常。)