Spring tool suite中自带Maven有问题,解决方案流程

是Spring以及Maven的双重新手,但是要使用这两种技术,开始在在MacPro中下载使用Spring Tool Suite 3.8.1.RELEASE,其中自带了Maven,但是在使用过程中发现问题不断。例如,创建普通的项目,就会报错类似如下的问题:

Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5 
Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5

上网搜索各种解决方案,发现解决方案都是删除本地库中的相关jar包重新下载以及加上其它配置等方式,例如下面的这篇文章: maven新建项目时报错,以及其它。

但是很奇怪,STS本就是新装上,maven还没有联网下载相关jar包,后来考虑到是不是eclipse自带的插件的问题,从官网上下载maven,解压之后,重新配置,主要是两个地方:

1:安装目录;

2:settings.xml配置文件修改

步骤可以参考:STS中配置独立 MAVEN

然后右键项目,在Maven菜单项下执行 update,但是最后还是有问题没有解决,读了一下报错信息,发现是在本地库以及远程库都没有找到相关jar包,这就考虑,是连接远程库有问题,搜索之后发现下面这篇文档给出来说明:
Eclipse创建maven项目时报错:maven-resources-plugin:2.5 or one of its dependencies could not be resolved,主要就是在setting.xml中添加:
<mirror>   
        <id>Central</id>   
        <url>http://repo1.maven.org/maven2</url>   
        <mirrorOf>central</mirrorOf>   
    </mirror>  

然后去搜索了一下mirror到底是什么?
下面的介绍就非常简单明了了:Maven里面mirror元素和repository元素的作用,主要答案如下:
简单点来说,repository就是个仓库。maven里有两种仓库,本地仓库和远程仓库。远程仓库相当于公共的仓库,大家都能看到。本地仓库是你本地的一个山寨版,只有你看的到,主要起缓存作用。当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。如果有则直接返回,否则会向远程仓库请求,并做缓存。你也可以把你做的东西上传到本地仓库给你本地自己用,或上传到远程仓库,供大家使用。 
远程仓库可以在工程的pom.xml文件里指定,楼上两位已经列的很清楚了。如果没指定,默认就会把下面这地方做远程仓库,即默认会到http://repo1.maven.org/maven2这个地方去请求插件和依赖包。 
   

Xml代码  收藏代码
<repository>  
      <snapshots>  
        <enabled>false</enabled>  
      </snapshots>  
      <id>central</id>  
      <name>Maven Repository Switchboard</name>  
      <url>http://repo1.maven.org/maven2</url>  
    </repository>  

本地仓库默认在你本地的用户目录下的.m2/repository目录下。 

mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径。比如,上班的时候在公司,用电信的网络,连的是电信的仓库。回到家后,是网通的网络,我想连网通的仓库,就可以通过mirror配置,统一把我工程里的仓库地址都改成联通的,而不用到具体工程配置文件里一个一个地改地址。 
mirror的配置在.m2/settings.xml里。如: 
Xml代码  收藏代码
<mirrors>  
  <mirror>  
    <id>UK</id>  
    <name>UK Central</name>  
    <url>http://uk.maven.org/maven2</url>  
    <mirrorOf>central</mirrorOf>  
  </mirror>  
</mirrors>  

这样的话,就会给上面id为central的远程仓库做了个镜像。以后向central这个仓库发的请求都会发到http://uk.maven.org/maven2而不是http://repo1.maven.org/maven2了。 
<mirrorOf>central</mirrorOf>里是要替代的仓库的id。如果填*,就会替代所有仓库。 

参考资料: 
http://maven.apache.org/guides/introduction/introduction-to-repositories.html 
http://maven.apache.org/guides/mini/guide-mirror-settings.html

使用开源的灵活定制的东西,会遇到各种麻烦,肯定不如商业产品,对各种环境都有非常好的兼容,对于开源的东西,就只能见招拆招了,不过一般百度一下,或者stackoverflow一下,再加上自己推测尝试,一般都是会解决问题。但是说实话,真的是会比商业软件耗费时间。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值