关于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
。默认值为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