首先我的錯誤是在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
。默認值為false
。Note 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
)和passphrase
。passphrase
和password
元素將來可能外化,但目前它們必須以純文本形式配置在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,repo2
or*,!
也是可以的.,但不能與<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